在生成的代码中命名C结构类型
coder.cstructname
命名生成的或外部定义的用于MATLAB的C结构类型®在生成的代码中表示为结构的变量。
coder.cstructname (
命名为MATLAB变量生成的C结构类型var
,structName
)var
.输入var
可以是一个结构或单元格数组。在生成代码的函数中使用此语法。的地方coder.cstructname
在定义之后var
而在第一次使用之前var
.如果var
入口点(顶层)函数输入参数是place吗coder.cstructname
在函数的开始,在任何控制流语句之前。
coder.cstructname (
指定要使用的C结构类型var
,structName
“外来的”,“HeaderFile”,headerfile
)var
有名字structName
并在外部文件中定义,headerfileName
.
可以使用“外来的”
选项,而不指定头文件。但是,最佳实践是指定头文件,以便代码生成器生成# include
语句在正确的位置。
coder.cstructname (
还指定外部定义的结构类型的运行时内存对齐方式var
,structName
“外来的”,“HeaderFile”,headerfile
“对齐”,对齐
)structName
.如果你有嵌入式编码器®并使用自定义代码替换库(CRLs),指定对齐方式,以便代码生成器能够匹配需要对齐结构的CRL函数。看到代码替换的数据对齐(嵌入式编码)。
返回结构或单元格数组类型对象outtype
= coder.cstructname (intype
,structName
)outtype
指定要生成的C结构类型的名称。coder.cstructname
创建outtype
使用输入类型的属性intype
.然后,它设置TypeName
财产structName
.类使用此语法创建类型对象codegen
arg游戏
选择。不能在从中生成代码的函数中使用此语法。
中不能使用此语法MATLAB函数块。
返回一个类型对象outtype
= coder.cstructname (intype
,structName
“外来的”,“HeaderFile”,headerfile
)outtype
指定外部定义的C结构类型的名称和位置。代码生成器为具有类型的变量使用外部定义的结构类型outtype
.
中不能使用此语法MATLAB函数块。
创建一个类型对象outtype
= coder.cstructname (intype
,structName
“外来的”,“HeaderFile”,headerfile
“对齐”,对齐
)outtype
它还指定了C结构类型对齐。
中不能使用此语法MATLAB函数块。
你不能申请coder.cstructname
直接到全局变量。若要命名要与全局变量一起使用的结构类型,请使用coder.cstructname
创建命名结构类型的类型对象。然后,当你跑步时codegen
,指定全局变量具有该类型。看到将C结构类型命名为与全局结构变量一起使用(MATLAB编码器)。
对于单元格数组输入,外部定义的结构的字段名必须为f1
,f2
,等等。
有关代码生成器如何确定结构字段的C/ c++类型的信息,请参见将MATLAB类型映射到生成代码中的类型(MATLAB编码器)。
使用coder.cstructname
在结构数组上设置基本元素的结构类型的名称,而不是数组的名称。因此,你不能申请coder.cstructname
到结构数组元素,然后将其应用到具有不同C结构类型名称的数组。例如,以下代码是不允许的。第二个coder.cstructname
试图将基类型的名称设置为myStructArrayName
,与前面指定的名称冲突,myStructName
.
定义带有字段a的标量结构myStruct = struct(“一个”, 0);coder.cstructname (myStruct“myStructName”);定义带有字段a的结构数组myStructArray = repmat(myStruct,4,6);coder.cstructname (myStructArray“myStructArrayName”);
应用coder.cstructname
对结构数组的元素产生与应用相同的结果coder.cstructname
到整个结构数组。如果你申请coder.cstructname
对于结构数组的元素,必须使用单个下标引用该元素。例如,你可以用var (1)
,但不是var (1, 1)
.应用coder.cstructname
来var (:)
产生与应用相同的结果coder.cstructname
来var
或var (n)
.
异构单元格数组在生成的代码中表示为结构。以下是使用时的注意事项coder.cstructname
使用单元格数组:
在生成代码的函数中,使用coder.cstructname
使用单元格数组变量将使单元格数组异构。因此,如果单元格数组是入口点函数输入,并且它的类型是永久同构的,则不能使用coder.cstructname
用单元格数组。
使用coder.cstructname
齐次的编码器。CellType
对象intype
使返回的对象异构。因此,您不能使用coder.cstructname
永久齐次的编码器。CellType
对象。有关单元格数组何时永久同构的信息,请参见在命令行指定单元格数组输入(MATLAB编码器)。
与a连用时编码器。CellType
对象,coder.cstructname
创建一个编码器。CellType
永久异构的。
当使用命名为的结构时coder.cstructname
在具有行为主和列为主数组布局的项目中,代码生成器在某些情况下重命名结构,附加row_
或col_
到结构名称的开头。这种重命名为两个数组布局中使用的类型提供了惟一的类型定义。
这些建议只适用于MATLAB函数块:
MATLAB函数块输入输出结构与总线信号相关联。为结构类型生成的名称来自总线信号名称。不要使用coder.cstructname
为输入或输出信号命名结构类型。看到在MATLAB函数块中创建结构.
代码生成器根据标识符命名规则生成结构类型名称,即使您用coder.cstructname
.如果您有嵌入式Coder,您可以自定义命名规则。看到生成标识符的构造(嵌入式编码)。