C99 との互換性のための拡張機能

IBM® XL C++ は、以下の C99 言語機能のサポートを追加します。これらの機能のすべては、デフォルト言語レベルである -qlanglvl=extended オプションで使用可能です。

表 1. Standard C++ への拡張機能としてのデフォルトの C99 の機能
言語機能 参照先
重複型修飾子 型修飾子
構造体または共用体の最後にある柔軟な配列メンバー 柔軟な配列メンバー
_Pragma 演算子 _Pragma プリプロセッシング演算子
追加の事前定義マクロ名 標準の事前定義マクロ名
関数類似マクロの空の引数 関数類似マクロ
C 標準プラグマ 標準のプラグマ (C のみ)

以下の機能は、デフォルト言語レベルの -qlanglvl=extended オプションで使用可能です。 また、下記の表にリストされている特定のコンパイラー・オプションによって使用可能または使用不可になります。

表 2. Standard C++ への拡張機能としてのデフォルトの C99 の機能 (個々のオプション制御付き)
言語機能 参照先 個々のオプション制御
__func__ 事前定義 ID __func__ 事前定義 ID -qlanglvl=[no]c99__func__
16 進浮動小数点リテラル 16 進浮動小数点リテラル -qlanglvl=[no]c99hexfloat
複素数データ型 複素数浮動小数点型 -qlanglvl=[no]c99complex
enum 宣言内で許可される末尾コンマ 列挙型の定義 -qlanglvl=[no]trailenum
restrict 型修飾子 restrict 型修飾子 -q[no]keyword=restrict
可変長配列 可変長配列 -qlanglvl=[no]c99vla
複合リテラル 複合リテラル式 -qlanglvl=[no]c99compoundliteral
関数類似マクロの変数引数 関数類似マクロ -qlanglvl=[no]varargmacros

以下の機能は、下記の表にリストされている特定のコンパイラー・オプションによってのみ使用可能です。

表 3. Standard C++ への拡張機能としての C99 の機能 (個々のオプション制御付き)
言語機能 参照先 個々のオプション制御
ユニバーサル文字名 ユニコード規格 -qlanglvl=ucs