言語機能に関連したマクロ

以下のマクロは、使用可能な C99 機能、GNU C または C++ に関連した機能、および他の IBM 言語拡張機能についてテストすることができます。 リストされた機能が指定されたコンパイラー・オプションの下でサポートされている場合、マクロは 1 の値に定義されています。機能がサポートされていない場合、そのマクロは未定義です。事前定義のマクロはすべて保護されています。

表 40. 言語機能の事前定義マクロ
事前定義マクロ名 説明 コンパイラー・オプション:
__ALTIVEC__ ベクトル・データ型に対するサポート -qaltivec
__C99_BOOL _Bool データ型に対するサポート C のみ -qlanglvl=stdc99|extc99|extc89|extended
__C99_COMPLEX 複素数データ型に対するサポート C のみ -qlanglvl=stdc99|extc99|extc89|extended
__C99_COMPLEX_HEADERS__ C99 スタイル複素数ヘッダーに対するサポート C++ のみ -qlanglvl=extended
__C99_CPLUSCMT C++ スタイル・コメントに対するサポート

C のみ

-qlanglvl=stdc99|extc99

-qcpluscmt
__C99_COMPOUND_LITERAL 複合リテラルに対するサポート C のみ -qlanglvl=stdc99|extc99|extc89|extended
__C99_DESIGNATED_INITIALIZER 指定された初期化に対するサポート C のみ -qlanglvl=stdc99|extc99|extc89|extended
__C99_DUP_TYPE_QUALIFIER 重複する型修飾子に対するサポート C のみ -qlanglvl=stdc99|extc99|extc89|extended
__C99_EMPTY_MACRO_ARGUMENTS 空のマクロ引数に対するサポート C のみ -qlanglvl=stdc99|extc99|extc89|extended

C++ のみ -qlanglvl=extended

__C99_FLEXIBLE_ARRAY_MEMBER フレキシブル配列メンバーに対するサポート C のみ -qlanglvl=stdc99|extc99|extc89|extended
__C99__FUNC__ __func__ キーワードに対するサポート

C のみ -qlanglvl=stdc99|extc99|extc89|extended

C++ のみ -qlanglvl=extended

__C99_HEX_FLOAT_CONST 16 進浮動小数点定数に対するサポート C のみ -qlanglvl=stdc99|extc99|extc89|extended

C++ のみ -qlanglvl=extended

__C99_INLINE inline 関数指定子に対するサポート C のみ -qlanglvl=stdc99|extc99

-qkeyword=inline

__C99_LLONG long long データ型に対するサポート C のみ -qlanglvl=stdc99|extc99
__C99_MACRO_WITH_VA_ARGS 変数引数を持つ関数のようなマクロに対するサポート

C のみ -qlanglvl=stdc99|extc99|extc89|extended

C++ のみ -qlanglvl=extended

__C99_MAX_LINE_NUMBER #line ディレクティブに対する新規制限 C のみ -qlanglvl=stdc99|extc99|extc89|extended
__C99_MIXED_DECL_AND_CODE 混合宣言およびコードに対するサポート C のみ -qlanglvl=stdc99|extc99|extc89|extended
__C99_MIXED_STRING_CONCAT 幅の広いストリング・リテラルと幅の広くないストリング・リテラルの連結に対するサポート C のみ -qlanglvl=stdc99|extc99|extc89|extended
__C99_NON_LVALUE_ARRAY_SUB 配列の非 lvalue 添え字に対するサポート C のみ -qlanglvl=stdc99|extc99|extc89|extended
__C99_NON_CONST_AGGR_INITIALIZER 非定数集合体初期化指定子に対するサポート C のみ -qlanglvl=stdc99|extc99|extc89|extended
__C99_PRAGMA_OPERATOR _Pragma 演算子に対するサポート

C のみ -qlanglvl=stdc99|extc99|extc89|extended

C++ のみ -qlanglvl=extended

__C99_REQUIRE_FUNC_DECL サポートされない暗黙の関数宣言 C のみ -qlanglvl=stdc99
__C99_RESTRICT restrict 修飾子に対するサポート

C のみ -qlanglvl=stdc99|extc99 -qkeyword=restrict

C++ のみ-qlanglvl=extended -qkeyword=restrict

__C99_STATIC_ARRAY_SIZE 関数に対する配列パラメーターの static キーワードに対するサポート C のみ -qlanglvl=stdc99|extc99|extc89|extended
__C99_STD_PRAGMAS 標準プラグマに対するサポート C のみ -qlanglvl=stdc99|extc99|extc89|extended
__C99_TGMATH tgmath.h の型汎用マクロに対するサポート C のみ -qlanglvl=stdc99|extc99|extc89|extended
__C99_UCN 汎用文字名に対するサポート C のみ -qlanglvl=stdc99|extc99|ucs

C++ のみ -qlanglvl=ucs

__C99_VAR_LEN_ARRAY 可変長配列に対するサポート C のみ -qlanglvl=stdc99|extc99|extc89|extended
__C99_VARIABLE_LENGTH_ARRAY

C++ のみ extended

__IBM__ALIGNOF__ __alignof__ 演算子に対するサポート

C のみ -qlanglvl=extc99|extc89|extended

C++ のみ -qlanglvl=extended

__IBM_ALTERNATE_KEYWORDS 代替キーワードに対するサポート C のみ -qlanglvl=extc99|extc89|extended
__IBM_ATTRIBUTES 型、変数、および関数属性に対するサポート

C のみ -qlanglvl=extc99|extc89|extended

C++ のみ -qlanglvl=extended

__IBM_COMPUTED_GOTO 計算された goto 文に対するサポート

C のみ -qlanglvl=extc99|extc89|extended

C++ のみ -qlanglvl=extended

__IBM_EXTENSION_KEYWORD __extension__ キーワードに対するサポート

C のみ -qlanglvl=extc99|extc89|extended

C++ のみ -qlanglvl=extended

__IBM_GCC_ASM GNU C インライン asm 文に対するサポート

C のみ -qlanglvl=extc99|extc89|extended, -qkeyword=asm, -qasm=gcc

C++ のみ -qlanglvl=extended, -qasm=gcc

__IBM_GCC__INLINE__ GNU C __inline__ 指定子に対するサポート

C のみ -qlanglvl=extc99|extc89|extended

C++ のみ -qlanglvl=extended

__IBM_DOLLAR_IN_ID ID のドル記号に対するサポート

C のみ -qlanglvl=extc99|extc89|extended

__IBM_GENERALIZED_LVALUE 汎用の左辺値に対するサポート

C のみ -qlanglvl=extc99|extc89|extended

__IBM_INCLUDE_NEXT #include_next プリプロセス・ディレクティブに対するサポート

C のみ -qlanglvl=extc99|extc89|extended

C++ のみ -qlanglvl=extended

__IBM_LABEL_VALUE 値としてのラベルに対するサポート

C のみ -qlanglvl=extc99|extc89|extended

C++ のみ -qlanglvl=extended

__IBM_LOCAL_LABEL ローカル・ラベルに対するサポート

C のみ -qlanglvl=extc99|extc89|extended

C++ のみ -qlanglvl=extended

__IBM_MACRO_WITH_VA_ARGS variadic マクロ拡張機能に対するサポート

C のみ -qlanglvl=extc99|extc89|extended

C++ のみ -qlanglvl=extended

_IBM_NESTED_FUNCTION ネストされた関数に対するサポート

C のみ -qlanglvl=extc99|extc89|extended

__IBM_PP_PREDICATE #assert#unassert#cpu#machine、および #system プリプロセス・ディレクティブに対するサポート

C のみ -qlanglvl=extc99|extc89|extended

__IBM_PP_WARNING #warning プリプロセス・ディレクティブに対するサポート

C のみ -qlanglvl=extc99|extc89|extended

__IBM_REGISTER_VARS 指定されたレジスターの変数に対するサポート

C のみ

__IBM_STDCPP_ASM asm 文に対するサポート。アセンブラー・コードが生成される場合、マクロは 1 の値を持ちます。そうでない場合は 0 になります。

C++ のみ

__IBM__TYPEOF__ __typeof__ キーワードに対するサポート

C のみ -qlanglvl=extc99|extc89|extended, -qkeyword=typeof

C++ のみ -qlanglvl=extended、-qkeyword=typeof

__IBM_UTF_LITERAL UTF-16 および UTF-32 ストリング・リテラルに対するサポート -qutf