指定入口函数输入的类型
由于 C 和 C++ 是静态类型语言,因此代码生成器必须在代码生成过程中确定生成代码中所有变量的类和大小。要生成具有特定变量类型的 C/C++ 代码,您必须指定入口函数所有输入的类型。输入类型设定是代码生成工作流中的关键步骤。
如果入口函数没有输入,可以跳过此步骤。您不需要指定非入口函数的输入的类和大小。
输入类型设定的方法
您必须指定入口函数的所有输入的类和大小。对于聚合类型,如类、结构体和元胞数组,还必须分别指定每个属性、字段和元素的类和大小。您可以通过多种方法指定输入类型:在 MATLAB® Coder™ 中指定,在命令行中使用带有 -args 选项的 codegen 命令指定,在 MATLAB 入口函数中使用函数参量验证(arguments 块)指定,或在 MATLAB 代码中使用预条件(assert 语句)指定。下表概述每种方法的优缺点。
| 方法 | 优点 | 缺点 |
|---|---|---|
Define Types of Entry-Point Inputs by Using the MATLAB Coder App |
|
|
|
| |
Use Function Argument Validation to Specify Entry-Point Input Types |
|
|
|
|
未使用的输入
如果一个或多个入口函数有未使用的输入变量,代码生成需要考虑某些因素,这些因素取决于您使用的输入类型设定的方法。
如果通过使用带有
-args选项的codegen函数来指定输入类型,则不必指定未使用的输入变量。但是,在函数声明中,所有使用的变量必须出现在所有未使用的变量之前。未使用和未指定的变量不会出现在生成的代码中。如果 MATLAB 入口函数的所有输入都未使用,并且您使用带有
-args选项的codegen函数指定输入类型,则您可以通过将空元胞数组{}传递给-args来生成不带输入的 C/C++ 函数。如果您使用 MATLAB Coder 指定输入类型,您必须指定未使用的输入的类型。未使用的输入出现在生成的代码中。
如果使用
arguments块或assert语句在 MATLAB 代码中定义输入类型,则必须指定未使用的输入的类型。您不能使用波浪号字符 (~) 指定未使用的输入。未使用的输入出现在生成的代码中。
提示
要指定作为定点
fi(Fixed-Point Designer) 对象的输入,您必须配置关联的numerictype(Fixed-Point Designer) 和fimath(Fixed-Point Designer) 对象。要从一个入口函数生成一个多签名 MEX 函数,请为该同一入口函数提供多个
-args设定。生成的 MEX 函数使用您在代码生成过程中提供的多个签名。有关多签名 MEX 函数生成的详细信息,请参阅Generate Code for Functions with Multiple Signatures。如果生成一个可以接受具有给定形状的空数组的 MEX、SIL 或 PIL 函数,则生成的函数也接受其他形状的空数组。MEX、SIL 或 PIL 函数会对空的运行时输入数组进行重构,以匹配在代码生成期间指定的数组的形状。请参阅由于通过 MEX、SIL 和 PIL 函数调整空数组的大小导致与 MATLAB 不兼容。