コード生成に使用する言語標準の変更
C/C++ 言語標準は、C/C++ の構文、ライブラリ、および機能を定義する一連のルールとガイドラインです。これらの標準に準拠すると、さまざまなプラットフォームやコンパイラで一貫して動作する C/C++ コードが生成されます。ターゲット言語標準を指定することにより、さまざまな言語標準と互換性のあるコードを生成できます。ただし、指定した言語標準を強制するには、コンパイラ フラグを手動で構成する必要があります。
指定した言語標準と互換性のあるコードの生成
既定では、コード生成時に指定したターゲット言語に基づいて、コード ジェネレーターよって言語標準が選択されます。ターゲット言語を変更するには、次のいずれかの方法を使用します。
ツールストリップの [MATLAB® Coder™] タブで、[言語] ボタンをクリックして出力言語を選択します。
コード構成オブジェクト内で
TargetLangプロパティを設定します。コード構成設定のダイアログ ボックスで [言語] パラメーターを設定します。
ターゲット言語が C の場合、既定の言語標準は C99 (ISO) です。ターゲット言語が C++ の場合、既定の言語標準は C++11 (ISO) です。既定以外の言語標準を指定するには、[言語標準] パラメーターを使用します。
この表は、コード生成に使用できるターゲット言語と言語標準の組み合わせを示しています。指定した言語標準がコンパイラでサポートされていることを確認します。コンパイラでサポートされていない言語標準を指定した場合、コンパイラ エラーが発生することがあります。
| ターゲット言語 | ターゲット言語標準 | コード ジェネレーターで使用される言語標準 |
|---|---|---|
| C、C++ | C89/C90 (ANSI) | ISO®/IEC 9899:1990 |
| C、C++ | C99 (ISO) | ISO/IEC 9899:1999 |
| C++ | C++03 (ISO) | ISO/IEC 14882:2003 |
| C++ | C++11 (ISO) | ISO/IEC 14882:2011(E) |
| C++ | C++14 (ISO) | ISO/IEC 14882:2014 |
| C++ | C++17 (ISO) | ISO/IEC 14882:2017 |
| C++ | C++20 (ISO) | ISO/IEC 14882:2020 |
ターゲット言語が C++ で、C 言語標準を選択すると、コード ジェネレーターは、選択した C 標準および C++03 言語機能で使用可能な C 数学ライブラリを使用します。
C コードを生成し、C99 (ISO) 言語標準を選択した場合、コード ジェネレーターは、C89/C90 (ANSI) 言語標準では使用できない、次に示すような C 言語機能を生成されたコードで使用できます。
変数のスコープ設定
INFINITYおよびNANマクロ関数
isinfおよびisnanboolean のリテラル
C++ コードを生成し、C++03 (ISO) より新しい言語標準を選択した場合、コード ジェネレーターは、C++03 (ISO) 言語標準では使用できない、次に示すような C++ 言語機能を生成されたコードで使用できます。
列挙クラス
明示的に既定に設定された特殊メンバー関数
{}を使用した一様初期化構文
指定した言語標準の強制
ターゲット言語標準を指定すると、コード ジェネレーターはその標準と互換性のあるコードを生成します。コード ジェネレーターは、選択した言語標準を強制しません。言語標準を強制するには、ビルド設定でコンパイラ フラグを手動で指定する必要があります。たとえば、次の表は、MATLAB Coder ソフトウェアでサポートされる言語標準を強制する GCC コンパイラ version 8.x のコンパイラ フラグを示しています。
| 言語標準 | コンパイラ フラグ |
|---|---|
| C89/C90 (ANSI) | -ansi -pedantic -Wno-long-long |
| C99 (ISO) | -std=c99 -pedantic |
| C++03 (ISO) | -std=c++03 -pedantic |
| C++11 (ISO) | -std=c++11 -pedantic |
| C++14 (ISO) | -std=c++14 -pedantic |
| C++17 (ISO) | -std=c++17 -pedantic |
| C++20 (ISO) | -std=c++20 -pedantic |
コンパイラ フラグをビルド情報オブジェクトに追加するには、次のいずれかの方法を使用します。
コード構成設定のダイアログ ボックスで [ビルド構成] パラメーターを
[Specify]に設定します。ツールチェーンを指定しなかった場合、アプリによってツールチェーンが検出されて [ツールチェーン] パラメーターに設定されます。[設定を表示] をクリックしてビルド構成設定を開き、コンパイラ フラグを [C コンパイラ] または [C++ コンパイラ] のテキスト ボックスに追加します。コマンド ラインで、
coder.CodeConfigまたはcoder.EmbeddedCodeConfigオブジェクトを作成します。BuildConfigurationプロパティを'Specify'に設定します。ツールチェーンを指定しなかった場合、アプリによってツールチェーンが検出されてToolchainプロパティが設定されます。コンパイラ フラグを含めるようにCustomToolchainOptionsプロパティを変更します。カスタム ツールチェーンの登録を参照してください。MATLAB コードで、名前と値の引数
"addCompileFlags"を指定してcoder.updateBuildInfo関数を呼び出すか、別の方法を使用してコード生成後のビルド プロセスをカスタマイズします。ビルド プロセスのカスタマイズを参照してください。
参考
coder.CodeConfig | coder.EmbeddedCodeConfig | coder.MexCodeConfig