C 標準バージョン (-c-version)
ソース コードで準拠する C 言語規格を指定
説明
ソース コードで準拠する C 言語規格を指定します。このオプションは、動的テストと静的解析の両方に適用されます。
オプションの設定
以下のいずれかの方法を使用してオプションを設定します。
Polyspace® ユーザー インターフェイス (デスクトップ製品のみ): プロジェクト構成で [ターゲットおよびコンパイラ] ノードを選択してから、このオプションの値を選択します。最初に有効にしなければならない他のオプションについては、依存関係を参照してください。
Polyspace Platform ユーザー インターフェイス (デスクトップ製品のみ): プロジェクト構成の [ビルド] タブで [ターゲットおよびコンパイラ] ノードを選択してから、このオプションの値を選択します。最初に有効にしなければならない他のオプションについては、依存関係を参照してください。
コマンド ラインとオプション ファイル: オプション
-c-versionを使用します。コマンド ライン情報を参照してください。
このオプションを使用する理由
このオプションを使用して、コンパイル時に Polyspace で C 標準バージョンに固有の機能が許容されるようにします。たとえば、フラグ -ansi または -std=c90 を使用して GCC でコンパイルする場合、このオプションに [c90] を指定します。言語規格がわからない場合は、[defined-by-compiler] を指定します。
たとえば、コードで boolean データ型 _Bool を使用するとします。この型は、C99 規格では定義されますが、C90 などの以前の規格では不明になります。Polyspace コンパイルが C90 規格に準拠する場合、コンパイル エラーになる可能性があります。
一部の MISRA C™ ルールは、C90 規格と C99 規格のどちらを使用しているかによって異なります。たとえば、MISRA C C:2012 Rule 5.2 では同一スコープおよび名前空間内の識別子が別個でなければなりません。C90 規格を使用している場合、同じ最初の 31 文字をもつ異なる識別子はこのルールに違反します。C99 規格を使用している場合、その文字数は 63 まで増えます。
設定
既定値: defined-by-compiler
defined-by-compiler解析では、
[コンパイラ] (-compiler)の仕様に基づく規格を使用します。Polyspace 解析で使用される C/C++ 言語規格を参照してください。
c90解析では、ISO®/IEC 9899:1990 規格 (非公式に C90 規格と呼ばれる) を使用します。Polyspace では、値
c90を設定した C99 キーワードinlineの使用が許可されます。c99解析では、ISO/IEC 9899:1999 規格 (非公式に C99 規格と呼ばれる) を使用します。
c11解析では、ISO/IEC 9899:2011 規格 (非公式に C11 規格と呼ばれる) を使用します。
Polyspace でサポートされる C11 言語の要素も参照してください。
c17解析では、ISO/IEC 9899:2018 規格 (非公式に C17 または C18 規格と呼ばれる) を使用します。
このバージョンは C11 規格の欠陥に対応していますが、新たな言語機能は導入していません。
__STDC_VERSION__マクロの値が201710Lに増加されました。
依存関係
このオプションは、
ソース コードの言語 (-lang)が[C]または[C-CPP]に設定されている場合にのみ使用できます。polyspace-configureコマンドまたは関数polyspaceConfigureを使用してビルド システムからプロジェクトまたはオプション ファイルを作成する場合、このオプションの値はビルド システムで自動的に決定されます。ビルド システムでさまざまなファイルにさまざまな規格を使用している場合、以降の Polyspace 解析でビルド システムをエミュレートし、これらのファイルのコンパイルにさまざまな規格を使用することができます。そのようなプロジェクトを Polyspace ユーザー インターフェイスで開く場合、オプションの値は
[defined-by-compiler]として示されます。しかし、1 つの規格の代わりに、Polyspace では非表示のオプション を使用して、さまざまな規格をさまざまなファイルに関連付けます。
コマンド ライン情報
パラメーター: -c-version |
値: defined-by-compiler | c90 | c99 | c11 | c17 |
既定値: defined-by-compiler |
例 (Bug Finder): polyspace-bug-finder -lang c -sources |
例 (Code Prover): polyspace-code-prover -lang c -sources |
例 (Bug Finder Server): polyspace-bug-finder-server -lang c -sources |
例 (Code Prover Server): polyspace-code-prover-server -lang c -sources |