主要内容

映射MATLAB在生成的代码类型类型

代码生成器生成C / c++的数据类型对应的数据类型使用MATLAB®代码。的数据类型取决于目标平台和编译器生成的。C代码生成器可以生产内置数据类型,例如,,int等等,通过使用C或自定义数据类型定义类型定义语句。默认情况下,代码生成器产生的内建类型为独立的代码(自由、dll或exe)和墨西哥人代码的定制类型。使用内置的C类型,修改DataTypeReplacement代码生成配置对象的属性或使用MATLAB编码器™应用。更多信息,请参阅指定生成的代码中使用的数据类型

生产定制的C / c++类型、代码生成器使用预定义的数据类型在头文件tmwtypes.h,位于fullfile (matlabroot“外来的”,“包括”)。代码生成器还可以生成自定义数据类型基于MATLAB代码的分析。自定义数据类型中定义的文件rtwtypes.hmyFunction_types.h位于代码生成目录。myFunction是顶级函数的名称。代码生成器不能产生在MATLAB代码为每个数据类型的存在。看到MATLAB语言特性支持C / c++代码生成金宝app

当你不使用内置的C数据类型、代码生成器产生这些数据类型:

MATLAB数据类型 相应的自定义C / c++数据类型
逻辑 boolean_T
字符 char_T
字符串 rtString
int8 int8_T
int16 int16_T
int32 int32_T
int64 int64_T
uint8 uint8_T
uint16 uint16_T
uint32 uint32_T
uint64 uint64_T
real32_T
real_T
复杂的 看到复杂类型
结构体 看到结构类型
fi 看到定点类型

通过引用传递一个变量时,相应的自定义数据类型使用废弃操作符。例如,相应的自定义C / c++数据类型int8当以引用的方式传递int8_T *

动态分配的数组映射到一个自定义的emxArray_类型。例如,一个动态分配的字符数组类型的地图emxArray_char_T。一个动态分配的数组类型映射到两倍emxArray_real_T。动态分配发生,例如,当数组大小不知道在编译时或者当你创建一个适应可变数组使用coder.varsize没有指定明确的上界。适应可变数组的更多信息,请参阅使用C数组生成的函数接口

复杂类型

在MATLAB,复杂性定义为一个数据类型的属性。此表列出了预定义的数据类型的代码生成器使用MATLAB复杂数据类型。

MATLAB复杂数据类型 相应的自定义C / c++数据类型
int8 cint8_T
int16 cint16_T
int32 cint32_T
int64 cint64_T
uint8 cuint8_T
uint16 cuint16_T
uint32 cuint32_T
uint64 cuint64_T
creal32_T
creal_T

代码生成器将每个复杂的值定义为一个结构与一个真正的组件再保险和一个虚构的组件即时通讯。例如,看到类型定义creal32_Ttmwtypes.h:

typedef struct {real32_T再保险;/ *实部* / real32_T im, / *假想组件* /}creal32_T;
假设你定义一个变量x类型的creal32_T。生成的代码访问真正的组件x.re和想象中的组件x.im

如果您的C / c++库需要不同的表示,您可以定义自己的版本的MATLAB编码器复杂的类型,例如,通过使用coder.cstructname。然而,你必须使用的名称再保险真正的组件和即时通讯虚构的组件定义。

有关更多信息,请参见代码生成复杂的数据

结构类型

MATLAB编码器地图结构C / c++类型系列。MATLAB中的结构字段的顺序定义保存。控制的名称生成的C / c++结构类型,或提供一个定义,使用coder.cstructname函数。如果你不使用动态内存分配时,数组结构转化为一维数组,而不是指针。有关更多信息,请参见结构

定点类型

numerictype的属性fi确定它的C / c++对象数据类型。默认情况下,代码生成器试图使用内置的C / c++类型。但是,您可以选择使用定制的C / c++的数据类型。下面的表显示了Signedness,,FractionLength属性确定自定义C / c++数据类型。自定义C / c++数据类型是下一个大的目标词大小,可以存储定点值,根据其词的长度。整数类型匹配的符号的符号定点类型。

Signedness 字长 部分长度 相应的自定义C / c++数据类型
1 8 7 int8_T
1 13 10 int16_T
1 16 15 int16_T
0 19 15 uint32_T

特征向量

MATLAB编码器软件MATLAB特征向量映射到C / c++字符数组。这些字符数组不是C / c++字符串,因为他们不是以null结尾。如果你通过MATLAB特征向量外部C / c++代码,预计一个C / c++字符串,生成的C / c++字符数组必须以null结尾。生成一个以null结尾的C / c++字符数组,附加一个零的MATLAB特征向量。例如,['示例文本' 0]。否则,生成的代码,预计一个字符串可以停止工作没有编译错误或警告。

多字类型

多字类型自定义类型时生成目标硬件不能MATLAB数据类型存储在内置的C / c++类型。多字类型生成C / c++结构类型包含一个整数数组。数组维度的大小取决于最大整数类型在目标硬件。

例如,对于一个128位定点类型,如果最大的整数类型在目标硬件上是32位,软件生成一个结构数组的4个32位整数。

typedef struct {unsigned int块[4];}uint128m_T;

如果最大的整数类型在目标硬件是一个64位的大小,代码生成器产生结构两个64位长类型的数组。

typedef struct{无符号长块[2];}uint128m_T;

C / c++数据类型生成一个64位整数MATLAB类型取决于大小的整数类型在目标硬件。如果内置类型宽足够存储64位不存在,那么64位MATLAB编码器类型映射到一个自定义的多字类型。

另请参阅

|

相关的话题