在生成的代码中命名C结构类型
Coder.cstructName.
命名生成的或外部定义的用于MATLAB的C结构类型®在生成的代码中表示为结构的变量。
coder.cstructname (
命名为MATLAB变量生成的C结构类型var.
,structName.
)var.
.输入var.
可以是结构或单元格数组。在生成代码的函数中使用此语法。的地方Coder.cstructName.
在定义之后var.
在第一次使用之前var.
.如果var.
是一个入口点(顶级)函数输入参数,地点Coder.cstructName.
在函数的开头,在任何控制流语句之前。
coder.cstructname (
指定要使用的C结构类型var.
,structName.
,'extern','headerfile',headerfile
)var.
有名称structName.
并在外部文件中定义,headerfileName
.
可以使用“外来的”
选项,但不指定头文件。然而,最佳实践是指定头文件,以便代码生成器生成# include
在正确的位置语句。
coder.cstructname (
还指定外部定义的结构类型的运行时内存对齐var.
,structName.
,'extern','headerfile',headerfile
“对齐”,对齐
)structName.
.如果你有嵌入式编码器®并使用自定义代码替换库(CRL),指定对齐方式,以便代码生成器能够匹配需要对结构进行对齐的CRL函数。看到用于代码替换的数据对齐(嵌入式编码)。
返回一个结构或单元格数组类型对象outtype.
= coder.cstructName(intype
,structName.
)outtype.
指定要生成的C结构类型的名称。Coder.cstructName.
创建outtype.
输入类型的属性intype
.然后,它设置了typename.
财产structName.
.使用此语法创建与之使用的类型对象Codegen.
arg游戏
选择。不能在生成代码的函数中使用此语法。
您无法使用此语法MATLAB函数块。
返回类型对象outtype.
= coder.cstructName(intype
,structName.
,'extern','headerfile',headerfile
)outtype.
,它指定外部定义的C结构类型的名称和位置。代码生成器对具有type的变量使用外部定义的结构类型outtype.
.
您无法使用此语法MATLAB函数块。
创建一个类型对象outtype.
= coder.cstructName(intype
,structName.
,'extern','headerfile',headerfile
“对齐”,对齐
)outtype.
这也指定了C结构类型对齐。
您无法使用此语法MATLAB函数块。
你不能申请Coder.cstructName.
直接指向全局变量。要命名要与全局变量一起使用的结构类型,请使用Coder.cstructName.
创建名称结构类型的类型对象。然后,当你运行时Codegen.
,指定全局变量具有该类型。看到将C结构类型命名为全局结构变量使用.
对于单元格数组输入,外部定义的结构的字段名必须是f1
,f2
, 等等。
有关代码生成器如何确定结构字段的C/ c++类型的信息,请参见将MATLAB类型映射到生成的代码中的类型.
使用Coder.cstructName.
在结构上,数组设置基本元素的结构类型的名称,而不是数组的名称。因此,您不能申请Coder.cstructName.
到结构阵列元素,然后用不同的C结构类型名称将其应用于阵列。例如,不允许使用以下代码。第二Coder.cstructName.
尝试将基本类型的名称设置为myStructArrayName
,与以前指定的名称冲突,mystructname.
.
%定义标量结构与字段astruct myStruct = ('一种',0);Coder.cstructName(MyStruct,'mystructname');%定义了与字段a的结构数组myStructArray = repmat (myStruct 4 6);coder.cstructname (myStructArray'mystructarrayname');
申请Coder.cstructName.
对结构数组的一个元素进行应用时,会产生与apply相同的结果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.
有一个同质的Coder.celltype.
对象intype
使返回的物体异构。因此,你不能使用Coder.cstructName.
永久均匀的Coder.celltype.
目的。有关Cell array永久性均匀的信息,请参阅信息在命令行指定单元格阵列输入.
与a一起使用时Coder.celltype.
目的,Coder.cstructName.
创造一个Coder.celltype.
永久异构的对象。
当您使用命名的结构时Coder.cstructName.
在具有行 - 主要和列主要数组布局的项目中,代码生成器在某些情况下重命名结构,追加排_
或者col
到结构名称的开头。这种重命名为这两种数组布局中使用的类型提供了唯一的类型定义。
这些技巧只适用于MATLAB函数块:
MATLAB函数块输入和输出结构与总线信号相关联。为结构类型生成的名称来自总线信号名称。不要使用Coder.cstructName.
命名用于输入或输出信号的结构类型。看到在MATLAB功能块中创建结构(金宝app模型)。
代码生成器根据标识符命名规则生成结构类型名称,即使您使用Coder.cstructName.
.如果您有嵌入式编码器,则可以自定义命名规则。看到生成标识符的构造(嵌入式编码)。