Main Content

coder.mustBeConst

値がコンパイル時の定数であることの検証

R2023b 以降

説明

coder.mustBeConst(value) は、関数入力 value がコード生成時に定数 (このコンテキストでは "コンパイル時の定数" とも呼ばれる) であることを検証します。コード生成時、value がコンパイル時の定数でない場合、この関数はエラーをスローします。MATLAB® 実行中には、この関数は無効です。

すべて折りたたむ

この例では、エントリポイント関数から呼び出された関数への入力がコード生成時の定数 ("コンパイル時の定数" とも呼ばれる) であることを検証する方法を示します。

ローカル関数 local を呼び出すエントリポイント関数 testConstant を定義します。coder.mustBeConst バリデーターを使用して、ローカル関数への最初の入力がコンパイル時の定数であると検証されます。

function out = testConst(in1,in2)
if in1 > 0
    out = local(in1,in2);
else
    out = local(-in1,in2);
end
end

function u = local(x,y)
arguments
    x {coder.mustBeConst}
    y 
end
u = sqrt(x) + y;
end

codegen コマンドを使用して、関数 testConst のコードを生成します。-args オプションを使用して、エントリポイント入力 in1 および in2 を double 型のスカラーに指定します。

codegen testConst -args {0,0}
Value must be constant.

Error in ==> testConst Line: 11 Column: 8
Code generation failed: View Error Report

ランタイム入力 in1 の絶対値が関数 local の呼び出し時に最初の引数として直接渡されるため、コード生成は失敗します。この値はコンパイル時に既知でないため、coder.mustBeConst バリデーターはコード生成時にエラーをスローします。

関数 coder.Constant を使用して最初のエントリポイント入力を定数型に指定して、codegen コマンドを変更します。

codegen testConst -args {coder.Constant(0),0}
Code generation successful.

local に渡された最初の入力が定数型であるため、coder.mustBeConst バリデーターはエラーをスローせず、コード生成は成功します。

入力引数

すべて折りたたむ

コンパイル時の定数として検証する値。以下にリストされたいずれかのデータ型のスカラーまたは配列として指定します。この引数は、自分が作成した値クラスのインスタンスにすることもできます。ハンドル オブジェクトを coder.mustBeConst に渡すことはサポートされていません。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | struct | cell | function_handle | categorical | datetime | duration | fi

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。

バージョン履歴

R2023b で導入

参考