C++ 標準バージョン (-cpp-version)
ソース コードで準拠する C++ 言語規格を指定
説明
ソース コードで準拠する C++ 言語規格を指定します。このオプションは、動的テストと静的解析の両方に適用されます。
オプションの設定
以下のいずれかの方法を使用してオプションを設定します。
Polyspace® ユーザー インターフェイス (デスクトップ製品のみ): プロジェクト構成で [ターゲットおよびコンパイラ] ノードを選択してから、このオプションの値を選択します。最初に有効にしなければならない他のオプションについては、依存関係を参照してください。
Polyspace Platform ユーザー インターフェイス (デスクトップ製品のみ): プロジェクト構成の [ビルド] タブで [ターゲットおよびコンパイラ] ノードを選択してから、このオプションの値を選択します。最初に有効にしなければならない他のオプションについては、依存関係を参照してください。
コマンド ラインとオプション ファイル: オプション
-cpp-versionを使用します。コマンド ライン情報を参照してください。
このオプションを使用する理由
このオプションを使用して、コンパイル時に Polyspace で C++ 言語規格の特定バージョンからの機能が許容されるようにします。たとえば、フラグ -std=c++11 または -std=gnu++11 を使用して GCC でコンパイルする場合、このオプションに [cpp11] を指定します。言語規格がわからない場合は、[defined-by-compiler] を指定します。
たとえば、範囲に基づく for ループを使用するとします。このタイプの for ループは、C++11 規格では定義されますが、C++03 などの以前の規格では認識されません。Polyspace コンパイルで C++03 規格が使用されている場合、コンパイル エラーになる可能性があります。
コンパイラで規格に固有の機能が許容されるかどうかをチェックするには、通常使用するコンパイラ設定を使用して、規格に固有のマクロが含まれたコードをコンパイルします。たとえば、C++11 に固有の機能をチェックするには、次のコードをコンパイルします。このコードには C++11 に固有のキーワード nullptr が含まれています。マクロ __cplusplus が 201103L (C++11 であることを示す) ではない場合、このキーワードが使用され、コンパイル エラーが発生します。
#if defined(__cplusplus) && __cplusplus >= 201103L
/* C++11 compiler */
#else
void* ptr = nullptr;
#endif
[cpp11] を使用します。設定
既定値: defined-by-compiler
defined-by-compiler解析では、
[コンパイラ] (-compiler)の仕様に基づく規格を使用します。Polyspace 解析で使用される C/C++ 言語規格を参照してください。
cpp03解析では、C++03 規格 (ISO®/IEC 14882:2003) を使用します。
cpp11解析では、C++11 規格 (ISO/IEC 14882:2011) を使用します。
Polyspace でサポートされる C++11 言語の要素も参照してください。
cpp14解析では、C++14 規格 (ISO/IEC 14882:2014) を使用します。
Polyspace でサポートされる C++14 言語の要素も参照してください。
cpp17解析では、C++17 規格 (ISO/IEC 14882:2017) を使用します。
Polyspace でサポートされる C++17 言語の要素も参照してください。
cpp20解析では、C++20 規格 (ISO/IEC 14882:2020) を使用します。
依存関係
このオプションは、
[ソース コードの言語] (-lang)が[CPP]または[C-CPP]に設定されている場合にのみ使用できます。polyspace-configureコマンドまたは関数polyspaceConfigureを使用してビルド システムからプロジェクトまたはオプション ファイルを作成する場合、このオプションの値はビルド システムで自動的に決定されます。ビルド システムでさまざまなファイルにさまざまな規格を使用している場合、以降の Polyspace 解析でビルド システムをエミュレートし、これらのファイルのコンパイルにさまざまな規格を使用することができます。そのようなプロジェクトを Polyspace ユーザー インターフェイスで開く場合、オプションの値は
[defined-by-compiler]として示されます。ただし、1 つの規格の代わりに、Polyspace ではファイルのコンパイルに複数の規格が使用されます。解析では、非表示オプション-options-for-sourcesを使用して、さまざまな規格をさまざまなファイルに関連付けます。
コマンド ライン情報
パラメーター: -cpp-version |
値: defined-by-compiler | cpp03 | cpp11 | cpp14 | cpp17 |
既定値: 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 |