このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
言語標準
コンパイラでサポートされている言語標準
モデル コンフィギュレーション ペイン: [コード生成]
説明
[言語標準] パラメーターは、コンパイラでサポートされている言語標準を指定します。
依存関係
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 で導入