1.4 言語標準の準拠

コンパイラには、使用可能なソース言語への準拠を強制したり、緩和したりするためのコマンドラインオプションが用意されています。

厳密モード
厳密モードでは、ソース言語に対応する言語標準への準拠が強く要求されます。たとえば、// 形式のコメントを厳密モードの C90 でコンパイルするとエラーになります。
厳密モードでコンパイルするには、コマンドラインオプション --strict を使用して下さい。
GNU モード
GNU モードでは、ソース言語の GNU コンパイラ拡張機能がすべて使用可能になります。GNU モードの例を以下に示します。
  • ソース言語が C90、C99、非厳密 C++ のいずれかの場合、 switch ステートメントの case で範囲指定が可能になります。
  • ソース言語が C90 または非厳密 C++ の場合、C99 形式の指定済みのイニシャライザが使用できます。
GNU モードでコンパイルする場合は、コンパイラの --gnu オプションを使用して下さい。

非厳密モードで使用可能な GNU 拡張機能は他にもあります。

サンプル

以下の例では、ソース言語モードと言語準拠モードの組み合わせを示します。
  • 拡張子が .cpp のファイルをコマンドラインオプション --strict を使用してコンパイルすると、標準 C++03 のコンパイルになります。
  • C のソースファイルをコマンドラインオプション --gnu でコンパイルすると、GNU モードの C90 のコンパイルになります。
  • 拡張子が .c のファイルをコマンドラインオプション --strict--gnu を両方指定してコンパイルするとエラーになります。
関連する参考文書
8.92 --gnu
8.176 --strict、--no_strict
9.45 C および C++ 言語に対する GNU 拡張機能
2.7 コンパイラで認識されるファイル名の接尾文字
章 14 GNU 言語拡張機能の概要の表
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.