メインコンテンツ

コード生成に使用する言語標準の変更

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 および isnan

  • boolean のリテラル

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 関数を呼び出すか、別の方法を使用してコード生成後のビルド プロセスをカスタマイズします。ビルド プロセスのカスタマイズを参照してください。

参考

| |

トピック