付録および後付け


付録 A. 事前定義マクロ

事前定義マクロは幾つかのカテゴリーに分かれています。言語フィーチャーに関連したマクロ、コンパイラーに関連したマクロ、および Linux プラットフォームに関連するマクロがあります。

言語仕様によって必須とされているものを含む、言語フィーチャーに関連したマクロについては、「XL C/C++ ランゲージ・リファレンス」の『プリプロセッサー・ディレクティブ』のセクションを参照してください。


XL コンパイラーを指示するマクロ

XL コンパイラーに関連した事前定義マクロは常に定義されます。

事前定義マクロ名 説明
__IBMC__ C のみ。 バージョン、リリース、およびモディフィケーション番号を表す整数定数として XL C コンパイラーのレベルを指示します。
__IBMCPP__ C++ のみ。 バージョン、リリース、およびモディフィケーション番号を表す整数定数として XL C++ コンパイラーのレベルを指示します。
__xlc__ C のみ。 バージョン、リリース、モディフィケーション、およびフィックス・レベルを表すストリングとして XL C コンパイラーのレベルを指示します。
__xlC__ C++ のみ。 バージョン、リリース、およびモディフィケーション番号を表す 3 桁の 16 進定数として XL C++ コンパイラーのレベルを指示します。 XL C コンパイラーの使用により、このマクロも自動的に定義されます。

Linux プラットフォームに関連するマクロ

プラットフォーム間でのアプリケーションの移植を容易にするために、以下の事前定義マクロが提供されています。

事前定義マクロ名 説明
_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 C++ に適用 -qeh オプションが有効な場合、 1 に定義されます。それ以外の場合、これは定義されません。
__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 に定義されます。それ以外の場合、これは定義されません。

IBM Copyright 2003