coder.mustBeConst
説明
例
入力がコンパイル時の定数であることの検証
この例では、エントリポイント関数から呼び出された関数への入力がコード生成時の定数 ("コンパイル時の定数" とも呼ばれる) であることを検証する方法を示します。
ローカル関数 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
バリデーターはエラーをスローせず、コード生成は成功します。
入力引数
value
— 検証する値
スカラー | 配列
コンパイル時の定数として検証する値。以下にリストされたいずれかのデータ型のスカラーまたは配列として指定します。この引数は、自分が作成した値クラスのインスタンスにすることもできます。ハンドル オブジェクトを 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 で導入
参考
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)