代码生成器产生的C / C数据类型++对应于数据类型,您在使用MATLAB®码。所生成的数据类型取决于目标平台和编译器。代码发生器可以产生内置C数据类型,如短
,长
,INT
通过使用C中定义,等等,或自定义数据类型的typedef
声明。默认情况下,代码生成器产生的内置类型独立代码(LIB,DLL或EXE)和自定义类型MEX代码。使用内置的C型,修改DataTypeReplacement
代码生成配置对象的属性或使用MATLAB编码器™应用。欲了解更多信息,请参阅指定数据类型用于生成的代码。
以产生定制的C / C ++类型,代码生成器使用在头文件预定义数据类型tmwtypes.h
, 位于完整文件(matlabroot, '的extern', '包括')
。代码生成器还可以根据您的MATLAB代码分析产生自定义数据类型。自定义数据类型在文件中定义rtwtypes.h
和myFunction_types.h
位于代码生成目录。myFunction的
是你的顶级函数的名称。代码生成不能MATLAB中存在的每个数据类型生成代码。看到MATLAB语言功能支持C / C ++代码生成金宝app。
当你不使用内置的C数据类型,代码生成器产生这些数据类型:
MATLAB数据类型 | 对应的自定义C / C ++数据类型 |
---|---|
合乎逻辑 |
boolean_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 |
复杂 |
看到复杂类型。 |
结构 |
看到结构类型。 |
科幻 |
看到定点类型。 |
当一个变量通过引用传递,相应的自定义数据类型使用引用操作。例如,相应的自定义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 |
代码生成定义了每个复合值作为结构,其具有实数分量回覆
和虚分量IM
。例如,看到的typedef
对于creal32_T
从tmwtypes.h
:
typedef结构{real32_T重新; / *实分量* / real32_T IM; / *虚分量* /} creal32_T;
X
类型creal32_T
。所生成的代码访问实分量作为x.re
和虚分量作为x.im
。
如果你的C / C ++库需要不同的表现,你可以定义自己的版本MATLAB编码器复杂类型,例如,通过使用coder.cstructname
。但是,您必须使用的名称回覆
为真正的组件和IM
在您定义的虚部。
欲了解更多信息,请参阅代码生成复杂数据。
MATLAB编码器映射结构以C / C ++类型的场逐场。在MATLAB定义的结构字段的顺序被保留。为了控制生成的C / C ++结构类型的名称,或提供的定义,使用coder.cstructname
功能。如果你不使用动态内存分配,在结构数组转换成一维数组,不是指针。欲了解更多信息,请参阅结构。
该numerictype
一个属性科幻
对象确定其C / C ++数据类型。默认情况下,代码生成器尝试使用内置的C / C ++类型。但是,您可以选择使用定制的C / C ++数据类型来代替。下表显示了如何符号类型
,字长
和FractionLength
属性确定定制的C / C ++数据类型。自定义C / C ++数据类型是可存储的定点值,基于其字长下一个较大的目标字的大小。整数类型的符号的定点类型的符号相匹配。
符号类型 | 字长 | 分数长度 | 对应的自定义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 ++串,因为它们不是空终止。如果传递一个MATLAB字符向量到外部C / C ++代码,期望C / C ++字符串,将所生成的C / C ++字符数组必须是空终止。为了产生一个空值终止C / C ++字符数组,追加零到MATLAB字符矢量的末端。例如,[ '样本文本' 0]
。否则,生成需要一个字符串可以停止工作,没有编译器错误或警告工作代码。
多字类型是当目标硬件无法将MATLAB数据类型存储在内置的C / C ++类型生成自定义类型。多字类型被作为包含整数数组C / C ++结构类型生成的。阵列尺寸取决于在目标硬件的最宽的整数类型的大小。
例如,对于128位的定点类型,如果在目标硬件的最宽的整数类型是32位,软件生成具有的四个32位整数数组的结构。
typedef结构{unsigned int的块[4];} uint128m_T;
如果在目标硬件的最宽的整数类型是长
大小为64位,代码生成器产生两个64位长类型的数组的结构。
typedef结构{无符号长块[2];} uint128m_T;
从64位整数MATLAB类型产生的C / C ++数据类型取决于在目标硬件的整数类型的大小。如果内置型宽足以存储64位不存在,那么64位MATLAB编码器类型映射到自定义多字的类型。
coder.cstructname
|coder.opaque