1 組のシステムヘッダーが 32 ビットおよび 64 ビットのコンパイル環境をサポートします。64 ビットコンパイル環境用に別のインクルードパスを指定する必要はありません。
64 ビット環境をサポートするためにヘッダーに加えられた変更をより理解するには、ヘッダーの <sys/isa_defs.h> のさまざまな定義について理解しておくことをお薦めします。このヘッダー中には #define
が含まれており、それらは各命令セットアーキテクチャに対して設定されています。<sys/types.h> をインクルードすると、自動的に <sys/isa_defs.h> がインクルードされます。
次の表にあるシンボルは、コンパイル環境 (コンパイラ) によって定義されます。
__sparc | SPARC ファミリーのプロセッサアーキテクチャのいずれかであることを示します。アーキテクチャには SPARC V7、SPARC V8、および SPARC V9 があります。シンボルの sparc は、慣例上 __sparc の同義語です。 |
__sparcv8 | 『SPARC Architecture Manual』のバージョン 8 で定義されている 32 ビット SPARC V8 アーキテクチャを示します。 |
__sparcv9 | 『SPARC Architecture Manual』のバージョン 9 で定義されている 64 ビット SPARC V9 アーキテクチャを示します。 |
__i386 | このシンボルは、Intel 386 命令セットあるいはそのスーパーセットを実装するすべてのプロセッサに対する総称です。これには、386、486、および Pentium ファミリーのプロセッサのすべてのメンバーが含まれます。 |
シンボル __sparcv8 および __sparcv9 は、相互に排他的で (両方が同時に定義されることはありません) 、シンボル __sparc が定義されているときにだけ意味があります。
次に示すシンボルは、上記のシンボルのいくつかの組み合わせから派生したものです。
_ILP32 | int、long、およびポインタのサイズがすべて 32 ビットであるデータ型モデル |
_LP64 | long およびポインタのサイズがすべて 64 ビットであるデータ型モデル |
シンボル _ILP32 および _LP64 も、相互に排他的です。
完全に移植性のあるコードを書くことが不可能で、32 ビットおよび 64 ビットのそれぞれに固有のコードが必要な場合は、_ILP32 または _LP64 を使って、コードを条件付きで切り替えるようにしてください。これによって、コンパイルマシンに依存しないコンパイル環境にすることができ、アプリケーションをすべての 64 ビットプラットフォームに移植する際の移植性が高くなります。