9.45 C および C++ 言語に対する GNU 拡張機能

GNU には、C および C++ 言語に対する多数の拡張機能が用意されています。また、これらの拡張機能の多くは ARM コンパイラによりサポートされています。GNU モードでは、ソース言語の GNU 拡張機能がすべて使用可能になります。非厳密モードでコンパイルする場合に使用可能な GNU 拡張機能は他にもあります。

GNU モードでコンパイルする場合は、--gnu を使用します。
GNU モードが有効な場合、以下の標準 C99 機能が C90 および C++ の GNU 拡張機能としてサポートされています。
  • 複合リテラル。
  • 指定された初期化子。
  • 自動変数用の集合イニシャライザの要素を定数式にする必要はありません。
asm キーワードは、GNU モードが有効である場合に C90 の GNU 拡張機能としてサポートされている標準 C++ 機能です。
以下の機能はいずれの ISO 標準規格にも含まれていませんが、GNU モードが有効な場合は、C90、C99、または C++ モードのいずれかで GNU 拡張機能としてサポートされます。
  • 代替キーワード(C90、C99、C++)。
  • case の範囲(C90、C99、C++)。
  • エスケープ文字 <ESC> (ASCII 27)に対する文字エスケープシーケンス '\e'(C90、C99、C++)。
  • 識別子内のドル記号(C90、C99、C++)。
  • 値としてのラベル(C90、C99、C++)。
  • 結果がテストと同じになる場合の条件付きステートメントの中間にあるオペランドの省略(C90、C99、C++)。
  • void ポインタと関数ポインタに対するポインタ算術演算(C90 および C99 のみ)。
  • ステートメント式(C90、C99、C++)。
  • 共用体のキャスト(C90 および C99 のみ)。
  • 組み込み構造体および組み込み共用体の無名のフィールド(C90、C99、C++)。
  • 長さがゼロの配列(C90 および C99 のみ)。
関連する参考文書
8.92 --gnu
1.4 言語標準の準拠
2.7 コンパイラで認識されるファイル名の接尾文字
14.1 サポートされている GNU 拡張機能
関連情報
Which GNU language extensions are supported by the ARM Compiler?
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.