事前定義マクロは幾つかのカテゴリーに分かれています。言語フィーチャーに関連したマクロ、コンパイラーに関連したマクロ、および Linux プラットフォームに関連するマクロがあります。
言語仕様によって必須とされているものを含む、言語フィーチャーに関連したマクロについては、「XL C/C++ ランゲージ・リファレンス」の『プリプロセッサー・ディレクティブ』のセクションを参照してください。
XL コンパイラーに関連した事前定義マクロは常に定義されます。
事前定義マクロ名 | 説明 |
---|---|
__IBMC__ |
![]() |
__IBMCPP__ |
![]() |
__xlc__ |
![]() |
__xlC__ |
![]() |
プラットフォーム間でのアプリケーションの移植を容易にするために、以下の事前定義マクロが提供されています。
事前定義マクロ名 | 説明 |
---|---|
_ARCH_PPC | プロセッサー・アーキテクチャーが PowerPC である場合、1 に定義されます。 |
_ARCH_PPC64 | プロセッサー・アーキテクチャーが PowerPC である場合、1 に定義されます。 |
__BASE_FILE__ | 基本ソース・ファイルの完全修飾ファイル名に対して定義されます。 |
_BIG_ENDIAN | 1 に定義されます。 |
__BIG_ENDIAN__ | 1 に定義されます。 |
_CALL_SYSV | 1 に定義されます。 |
__CHAR_UNSIGNED__ | オプション -qchars=unsigned または #pragma chars(unsigned) が有効である場合、1 に定義されます。オプション -qchars=signed または #pragma chars(signed) が有効な場合、このマクロは未定義となります。 |
__ELF__ | ELF オブジェクト・モデルが有効であることを指示するために、このプラットフォームで 1 に定義されます。 |
__EXCEPTIONS |
![]() |
__GXX_WEAK__ | C の場合は未定義。 C++ の場合、このマクロは g++ V3.3 では 0 に定義され、g++ V3.5 では 1 に定義されます。 |
__HOS_LINUX__ | ホスト・オペレーティング・システムが Linux である場合、1 に定義されます。それ以外の場合、これは定義されません。 |
__linux | 1 に定義されます。 |
__linux__ | 1 に定義されます。 |
__OPTIMIZE__ | 最適化レベル -O または -O2 では 2 に定義され、最適化レベル -O3 またはそれ以上では 3 に定義されます。 |
__OPTIMIZE_SIZE__ | オプション -qcompact および -O が設定されている場合、1 に定義されます。それ以外の場合、これは定義されません。 |
__powerpc | 1 に定義されます。 |
__powerpc__ | 1 に定義されます。 |
__powerpc64__ | 64 ビット・モードでコンパイルするときは、1 に定義されます。それ以外の場合、これは定義されません。 |
__PPC | 1 に定義されます。 |
__PPC__ | 1 に定義されます。 |
__PPC64__ | 64 ビット・モードでコンパイルするときは、1 に定義されます。それ以外の場合、これは定義されません。 |
__SIZE_TYPE__ | このプラットフォームでの基礎となる型 size_t に定義されます。このプラットフォームでは、マクロは long unsigned int として定義されます。 32 ビット・モードでは、マクロは unsigned int として定義されます。64 ビット・モードでは、マクロは long int として定義されます。コンパイル・モードは、-q32 および -q64 オプションによって制御されます。 |
__TOS_LINUX__ | ターゲット・オペレーティング・システムが Linux である場合、1 に定義されます。それ以外の場合、これは定義されません。 |
__unix | すべての UNIX 型のプラットフォームで 1 に定義されます。それ以外の場合、これは定義されません。 |
__unix__ | すべての UNIX 型のプラットフォームで 1 に定義されます。それ以外の場合、これは定義されません。 |