メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

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 が含まれています。マクロ __cplusplus201103L (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 "file1.c,file2.c" -cpp-version cpp11
例 (Code Prover): polyspace-code-prover -lang c -sources "file1.c,file2.c" -cpp-version cpp11
例 (Bug Finder Server): polyspace-bug-finder-server -lang c -sources "file1.c,file2.c" -cpp-version cpp11
例 (Code Prover Server): polyspace-code-prover-server -lang c -sources "file1.c,file2.c" -cpp-version cpp11