以下のマクロは、ソース入力特性、出力ファイル特性、および最適化などさまざまな機能についてテストすることができます。 これらのマクロはすべて、特定のコンパイラー・オプションまたはサブオプション、あるいはそのサブオプションを暗黙指定する呼び出しまたはプラグマによって事前定義されます。機能を使用可能にするサブオプションが有効でない場合、そのマクロは未定義です。
| 事前定義マクロ名 | 説明 | 事前定義値 | 以下のコンパイラー・オプションまたは同等のプラグマが有効である場合に事前定義されます。 |
|---|---|---|---|
| __ALTIVEC__ | Vector データ型がサポートされていることを示します。 (保護されていない) | 1 | -qaltivec |
| __64BIT__ | 64 ビットのコンパイル・モードが有効であることを示します。 | 1 | -q64 |
| _CHAR_SIGNED, __CHAR_SIGNED__ | デフォルトの文字タイプが signed char であることを示します。 | 1 | -qchars=signed |
| _CHAR_UNSIGNED, __CHAR_UNSIGNED__ | デフォルトの文字タイプが unsigned char であることを示します。 | 1 | -qchars=unsigned |
| __DEBUG_ALLOC__ | 標準メモリー管理関数のデバッグ・バージョンが使用されていることを示します。 | 1 | -qheapdebug |
| __IBM_GCC_ASM | GCC インラインの asm ステートメントがサポートされていることを示します。 | 1 | -qasm=gcc および -qlanglvl=extc99 | extc89 | extended または -qkeyword=asm |
| 0 | -qnoasm および -qlanglvl=extc99 | extc89 | extended または -qkeyword=asm |
||
| __IBM_DFP__ | 10 進浮動小数点型がサポートされていることを示します。 | 1 | -qdfp |
| __IBM_DFP_SW_EMULATION__ | 10 進浮動小数点の計算が、ハードウェア命令においてではなく、ソフトウェア・エミュレーションによって実装されていることを示します。 | 1 | -qfloat=dfpemulate |
| _IBMSMP | IBM SMP ディレクティブが認識されることを示します。 | 1 | -qsmp |
| __IBM_UTF_LITERAL | UTF-16 および UTF-32 ストリング・リテラルがサポートされていることを示します。 | 1 | LANGLVL(EXTENDED) |
| __LONGDOUBLE64 | long double 型のサイズが 64 ビットであることを示します。 | 1 | -qnoldbl128 |
| __LONGDOUBLE128 | long double 型のサイズが 128 ビットであることを示します。 | 1 | -qldbl128 |
| __OPTIMIZE__ | 最適化レベルが有効であることを示します。 | 2 | -O | -O2 |
| 3 | -O3 | -O4 | -O5 | ||
| __OPTIMIZE_SIZE__ | コード・サイズに対する最適化が有効であることを示します。 | 1 | -O | -O2 | -O3 | -O4 | -O5 および -qcompact |
| __VEC__ | Vector データ型がサポートされていることを示します。 | 10205 | -qaltivec |