このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
言語標準
コンパイラでサポートされている言語標準
モデル コンフィギュレーション ペイン: [コード生成]
説明
[言語標準] パラメーターは、コンパイラでサポートされている言語標準を指定します。
依存関係
C++ 言語標準は、[言語] パラメーターで
[C++]を選択した場合にのみ使用できます。[言語] パラメーターの値を変更すると、[言語標準] が
[C99 (ISO)](C の場合) および[C++11 (ISO)](C++ の場合) に更新されます。
設定
[C] に設定されている場合は [C99 (ISO)]、[言語] が [C++] に設定されている場合は [C++11 (ISO)] (既定値) | C89/C90 (ANSI) | C++03 (ISO) | C++11 (ISO) | C++14 (ISO) | C++17 (ISO) | C++20 (ISO)C89/C90 (ANSI)ISO®/IEC 9899:1990 C 言語標準に準拠したコードを生成します。
C99 (ISO)ISO/IEC 9899:1999 C 言語標準に準拠したコードを生成します。
C++03 (ISO)ISO/IEC 14882:2003 C++ 言語標準に準拠し、C++ の後続バージョンと互換性があるコードを生成します。
C++11 (ISO)ISO/IEC 14882:2011 C++ 言語標準に準拠し、C++ の後続バージョンと互換性があるコードを生成します。
C++14 (ISO)ISO/IEC 14882:2014 C++ 言語標準に準拠し、C++ の後続バージョンと互換性があるコードを生成します。
C++17 (ISO)ISO/IEC 14882:2017 C++ 言語標準に準拠し、C++ の後続バージョンと互換性があるコードを生成します。
C++20 (ISO)ISO/IEC 14882:2020 C++ 言語標準に準拠し、C++ の後続バージョンと互換性があるコードを生成します。
ヒント
このパラメーターを設定する前に、使用する標準がコンパイラでサポートされていることを確認してください。コンパイラでサポートされていないパラメーター値を選択した場合、コンパイラ エラーが発生することがあります。
たとえば、
[C99 (ISO)]を選択した場合、コード ジェネレーターは最小限のスコープを実装するため、その生成コードはC89/90コンパイラでサポートされません。
ISO/IEC 9899:1999 C をサポートしていないコンパイラを使用する場合は、このパラメーターを
[C89/C90 (ANSI)]に設定します。指定した言語標準とツールチェーンに互換性があるかどうかビルド プロセスでチェックされます。互換性がない場合、コード生成中に警告が発生しますがビルド プロセスは継続します。
ビルド プロセスで Linux® GCC コンパイラを使用している場合は、ソフトウェアは、コンパイラの既定の言語標準を使用して生成コードをコンパイルします。コンパイラのバージョンによって既定の言語標準は異なります。詳細については、C++ Standards Support in GCC を参照してください。
たとえば、GCC コンパイラ version 8.x を使用していて、[言語標準] パラメーターを
C++03に設定した場合、ソフトウェアはコンパイル時にC++14言語標準を使用します。C++14を使用すると、C++11またはC++14の機能を使用するカスタム コードを統合する生成コードをビルドできます。パラメーターで指定した言語標準をコンパイル プロセスに適用する場合は、言語標準に固有のコンパイラ フラグを追加しなければなりません。コードのビルドにツールチェーンを使用するようにモデルが構成されている場合は、次の手順を使用します。
[コンフィギュレーション パラメーター] ダイアログ ボックスで、[ビルド構成] を
[Specify]に設定します。[ツールチェーンの詳細] で、
C CompilerおよびC++ Compilerの [オプション] フィールドのエントリの最後に次のコンパイラ フラグを手動で追加します。[言語標準] が
C99(ISO)に設定されている場合は、フラグ-std=c99 -pedanticを追加します。[言語標準] が
C89/90(ANSI)に設定されている場合は、フラグ-ansi -pedantic -Wno-long-longを追加します。モデルの構成によっては、定義'typedef unsigned long long ulonglong_T'を含む Coder のtypedefヘッダー ファイルがビルド プロセスに含まれることがあります。-Wno-long-longは、long long型の使用に関する C90 コンパイラの警告を抑制します。[言語標準] が
C++03に設定されている場合は、フラグ-std=c++03 -pedanticを追加します。[言語標準] が
C++11に設定されている場合は、フラグ-std=c++11 -pedanticを追加します。[言語標準] が
C++14に設定されている場合は、フラグ-std=c++14 -pedanticを追加します。[言語標準] が
C++17に設定されている場合は、フラグ-std=c++17 -pedanticを追加します。[言語標準] が
C++20に設定されている場合は、フラグ-std=c++20 -pedanticを追加します。
[言語標準] が
C++17またはC++20に設定されている場合は、指定された標準を適用するコンパイラ フラグが自動的に追加されます。CMake ベースのツールチェーンを使用するようにモデルが構成されている場合、指定された標準に対する依存関係を宣言するために、生成される
CMakeLists.txtのコマンドにtarget_compile_featuresコマンドが追加されます。たとえば、target_compile_features(myComponent PUBLIC cxx_std_20)です。このコマンドは、コードのビルド システムの生成時に必要なコンパイラ フラグを提供するように CMake に指示します。次のツールチェーンのいずれかを使用するようにモデルが構成されている場合:
GNU gcc/g++ | gmake (64-bit Linux)(Linux)MinGW64 | gmake (64-bit Windows)(Windows®)Microsoft Visual C++(Windows)msvc_release ver.0 | nmake (64-bit Windows)
この場合、コンパイラの既定の言語標準を使用して生成コードがコンパイルされます。通常、
Cの場合はC99、C++の場合はC++14です。[言語標準] がC++17またはC++20に設定されている場合は、必要なコンパイラ フラグが自動的に適用されます。次のツールチェーンのいずれかを使用するようにモデルが構成されている場合:
Xcode with Clang | gmake (64-bit Mac)(Intel® または ARM® Mac)Intel oneAPI(Windows)intel_release(w/Microsoft Visual Studiomsvs_release) | nmake (64-bit Windows)
この場合は次のようになります。
Cコードをコンパイルする場合は、コンパイラの既定の言語標準 (通常はC99) が使用されます。C++14以下のC++コードをコンパイルする場合は、C++14に必要なコンパイラ フラグが追加されます。C++17またはC++20のC++コードをコンパイルする場合は、対応するコンパイラ フラグが追加されます。
他のいずれかのツールチェーンを使用するようにモデルが構成されている場合は、必要な言語標準固有のコンパイラ フラグを、ツールチェーンで使用される
C CompilerとC++ Compilerのフラグに含めます。次のいずれかの方法を使用します。ツールチェーン定義でフラグを指定します。
[ビルド構成] を
[Specify]に設定し、手動でフラグを追加します。RTW.BuildInfoオブジェクトのaddCompileFlagsメソッドを使用します。たとえば、[コード生成後のコマンド] フィールド、ファイル、ビルド フックで使用します。specificSFunction_makecfg.mCコンパイラのみに対して必要なフラグを指定するには、次のコマンドを使用できます。buildInfo.addCompileFlags('-std=c99', 'C_OPTS');
C++コンパイラのみに対して必要なフラグを指定するには、次のコマンドを使用できます。buildInfo.addCompileFlags('-std=c++17', 'CPP_OPTS');
詳細については、コード生成後のビルド プロセスのカスタマイズ、生成される makefile を makecfg を使用して S-Function 用にカスタマイズする、およびSTF_make_rtw_hook ファイルによるビルド プロセスのカスタマイズを参照してください。
推奨設定
| アプリケーション | 設定 |
|---|---|
| デバッグ | 影響なし |
| トレーサビリティ | 影響なし |
| 効率性 | 有効なライブラリ |
| 安全対策 | 影響なし |
プログラムでの使用
パラメーター: TargetLangStandard |
| 型: 文字ベクトル |
値: 'C89/C90 (ANSI)' | 'C99 (ISO)' | 'C++03 (ISO)' | 'C++11 (ISO)' | 'C++14 (ISO)' | 'C++17 (ISO)' | 'C++20 (ISO)' |
既定の設定: C の場合は 'C99 (ISO)'、C++ の場合は 'C++11 (ISO)' |
バージョン履歴
R2014a で導入