C99 の機能

次のコマンドのいずれかを指定してコンパイルする場合、以下の機能がデフォルトで使用可能です。
  • xlc 呼び出しコマンド
  • c99 呼び出しコマンド
  • -qlanglvl=extc99 | stdc99 | extc89 | extended | extc1x オプション
これらのオプションについて詳しくは、『-qlanglvl』オプションを参照してください。
表 1. C89 への拡張機能としてのデフォルトの C99 の機能
言語機能 参照先
16 進浮動小数点定数 16 進浮動小数点リテラル
__func__ 事前定義 ID __func__ 事前定義 ID
ワイド文字ストリングおよび非ワイド文字ストリングの連結 ストリング連結
混合宣言およびコード データ宣言とデータ定義の概要
複素数データ型 複素数浮動小数点型
_Bool データ型 ブール型
enum 宣言内で許可される末尾コンマ 列挙型の定義
重複型修飾子 型修飾子
可変長配列 可変長配列
左辺値以外の配列添え字 配列添え字演算子 [ ]
構造体または共用体の最後にある柔軟な配列メンバー 柔軟な配列メンバー
構造体または共用体の初期化指定子の非定数式 構造体および共用体の初期化
指定された初期化指定子 集合体型に対する、指定された初期化指定子 (C のみ)
暗黙的関数宣言の除去 関数宣言
関数宣言内の暗黙的 int 戻りの型の除去 関数の戻りの型指定子
関数仮パラメーターとしての静的配列 関数仮パラメーター宣言の中の静的配列指標 (C のみ)
関数類似マクロの変数引数 関数類似マクロ
関数類似マクロの空の引数 関数類似マクロ
追加の事前定義マクロ名 標準の事前定義マクロ名
複合リテラル 複合リテラル式
_Pragma 演算子 _Pragma プリプロセッシング演算子
標準プラグマ 標準のプラグマ (C のみ)
次のコマンドのいずれかを指定してコンパイルする場合、以下の機能がデフォルトで使用可能です。
  • xlc 呼び出しコマンド
  • c99 呼び出しコマンド
  • -qlanglvl=extc99 | stdc99 | extc89 | extended | extc1x オプション
また、下記の表にリストされている特定のコンパイラー・オプションによって使用可能または使用不可になります。
表 2. C89 への拡張機能としてのデフォルトの C99 の機能 (個々のオプション制御付き)
言語機能 参照先 個々のオプション制御
2 文字表記 2 文字表記文字 -q[no]digraph
C++ スタイル・コメント コメント -q[no]cpluscmt
inline 関数指定子 inline 関数指定子 -qkeyword=inline
次のコマンドのいずれかを指定してコンパイルする場合、以下の機能がデフォルトで使用可能です。
  • xlc 呼び出しコマンド
  • c99 呼び出しコマンド
  • -qlanglvl=extc99 | stdc99 | extc1x オプション
表 3. C89 への拡張機能としての厳密な C99 の機能
言語機能 参照先
C99 long long C99 の整数リテラルの型
注: この機能は、-qlonglong オプションによって制御される long long 型の意味とは互換性がありません。 詳しくは、-qlonglongを参照してください。
次のコマンドのいずれかを指定してコンパイルする場合、以下の機能がデフォルトで使用可能です。
  • xlc 呼び出しコマンド
  • c99 呼び出しコマンド
  • -qlanglvl=extc99 | stdc99 | extc1x オプション
また、下記の表にリストされている特定のコンパイラー・オプションによって使用可能または使用不可になります。
表 4. C89 への拡張機能としての厳密な C99 の機能 (個々のオプション制御付き)
言語機能 参照先 個々のオプション制御
ユニバーサル文字名 ユニコード規格 -qlanglvl=[no]ucs
restrict 型修飾子 restrict 型修飾子 -qkeyword=restrict