主要内容

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 选项将入口函数输入 in1in2 指定为双精度标量。

codegen testConst -args {0,0}

Value must be constant.(值必须为常量。)

代码生成失败,因为运行时输入 in1 的绝对值在调用函数 local 时直接作为第一个参量传递。由于此值在编译时未知,coder.mustBeConst 验证函数会在代码生成期间抛出错误。

通过使用 coder.Constant (MATLAB Coder) 函数将第一个入口函数输入指定为常量类型,修改 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 中推出

另请参阅

(MATLAB Coder)