エントリポイント関数の入力の型の指定
C および C++ は静的に型付けされる言語であるため、コード ジェネレーターはコード生成中に、生成されたコード内のすべての変数のクラスとサイズを決定する必要があります。特定の変数型を含む C/C++ コードを生成するには、エントリポイント関数へのすべての入力の型を指定する必要があります。入力の型の指定は、コード生成のワークフローの重要な手順です。
エントリポイント関数に入力がない場合は、この手順をスキップできます。非エントリポイント関数への入力のクラスとサイズを指定する必要はありません。
入力の型の指定方法
エントリポイント関数へのすべての入力のクラスとサイズを指定する必要があります。クラス、構造体、cell 配列などの集約型の場合は、各プロパティ、フィールド、および要素のクラスとサイズもそれぞれ指定する必要があります。入力の型の指定は、MATLAB® Coder™ アプリを使用するか、コマンド ラインで -args オプションを指定した codegen コマンドを使用するか、MATLAB エントリポイント関数で関数の引数の検証 (arguments ブロック) を使用するか、MATLAB コード内で前提条件 (assert ステートメント) を使用して行うことができます。次の表は、これらの各方法の長所と短所をまとめたものです。
| 方法 | 長所 | 短所 |
|---|---|---|
|
| |
|
| |
Use Function Argument Validation to Specify Entry-Point Input Types |
|
|
|
|
未使用の入力
1 つ以上のエントリポイント関数に未使用の入力変数がある場合、コード生成には、使用している入力の型の指定方法に応じた特定の考慮事項があります。
-argsオプションを指定したcodegen関数を使用して入力の型を指定する場合、未使用の入力変数を指定する必要はありません。ただし、使用されているすべての変数が、関数宣言内ですべての未使用の変数より前に出現する必要があります。未使用および未指定の変数は、生成されたコードには出現しません。MATLAB エントリポイント関数への入力がすべて未使用で、
-argsオプションを指定したcodegen関数を使用して入力の型を指定する場合は、空の cell 配列{}を-argsに渡すことで、入力のない C/C++ 関数を生成できます。MATLAB Coder アプリを使用して入力の型を指定する場合は、未使用の入力の型を指定する必要があります。未使用の入力は、生成されたコードに出現します。
argumentsブロックまたはassertステートメントを使用して MATLAB コードで入力の型を定義する場合は、未使用の入力の型を指定する必要があります。チルダ記号 (~) を使用して未使用の入力を指定することはできません。未使用の入力は、生成されたコードに出現します。
ヒント
固定小数点の
fi(Fixed-Point Designer) オブジェクトである入力を指定するには、関連するnumerictype(Fixed-Point Designer) およびfimath(Fixed-Point Designer) オブジェクトを構成する必要があります。エントリポイント関数から複数シグネチャの MEX 関数を生成するには、同じエントリポイント関数に対して複数の
-argsを指定します。生成された MEX 関数は、コード生成中に指定した複数のシグネチャで動作します。複数シグネチャの MEX 関数の生成の詳細については、複数のシグネチャをもつ関数のコードの生成を参照してください。特定の形状の空配列を受け入れる MEX、SIL、または PIL 関数を生成した場合、生成された関数は他の形状の空配列も受け入れます。MEX、SIL、または PIL 関数は、コード生成中に指定された配列の形状と一致するように、空の実行時の入力配列の形状を変更します。MEX、SIL、および PIL 関数での空配列のサイズ変更による MATLAB との非互換性を参照してください。