映射马铃薯生成代码中类型的类型

代码生成器用C/ c++生成数据类型,这些数据类型与你在MATLAB中使用的数据类型相对应®码。生成的数据类型取决于目标平台和编译器。代码生成器可以生成内置的C数据类型,例如int或使用C定义的自定义数据类型类型定义陈述。默认情况下,代码生成器会为MEX代码的独立代码(lib,dll或exe)和自定义类型生成内置类型。要使用内置C类型,请修改数据表倒置属性,或使用Matlab Coder™更多信息,请参见指定生成代码中使用的数据类型

要生成自定义C / C ++类型,代码生成器在头文件中使用预定义的数据类型tmwtypes.h.,位于fullfile (matlabroot“外来的”,“包括”)。代码生成器还可以根据MATLAB代码的分析生成自定义数据类型。自定义数据类型在文件中定义RTWTYPES.H.myfunction_types.h.位于代码生成目录中。myfunction.是您的顶级功能的名称。代码生成器无法为MATLAB中存在的每个数据类型生成代码。看到支持MATLAB语言特性的C/ c++代码生成万博1manbetx

当您不使用内置的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. 看到定点类型

当通过引用传递变量时,相应的自定义数据类型使用Dereference Operator。例如,相应的自定义C / C ++数据类型INT8.当通过引用传递时INT8_T *

动态分配的数组映射到一个自定义emxarray_类型。例如,一个动态分配的字符数组地图到一种类型emxArray_char_T。一个动态分配的双数组映射到类型emxArray_real_T。例如,当数组大小在编译时或使用时创建变量大小阵列时,发生动态分配编码器.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 re; / *真实组件* / 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函数。如果不使用动态内存分配,结构中的数组将转换为一维数组,而不是指针。有关更多信息,请参见结构

定点类型

numerictypea的属性FI.对象确定其C / C ++数据类型。默认情况下,代码生成器尝试使用内置C / C ++类型。但是,您可以选择使用自定义C / C ++数据类型。下表显示了如何SignednessWordLength.,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++字符串,因为它们不是以空结尾的。如果您将MATLAB字符向量传递给外部C/ c++代码,该代码需要C/ c++字符串,则生成的C/ c++字符数组必须以空结尾。要生成以null结尾的C/ c++字符数组,请在MATLAB字符向量的末尾添加一个0。例如,['示例文本' 0]。否则,由于生成的代码,期望字符串可以在没有编译器错误或警告的情况下停止工作。

多字类型

多字类型是自定义类型,当目标硬件不能将MATLAB数据类型存储在内置的C/ c++类型中时,就会生成该类型。多字类型作为包含整数数组的C/ c++结构类型生成。数组的维数取决于目标硬件上最宽整数类型的大小。

例如,对于128位定点类型,如果目标硬件上的最宽整数类型为32位,则软件生成具有四个32位整数阵列的结构。

typedef struct {unsigned int块[4];uint128m_t;

如果目标硬件上最宽的整数类型是a尺寸为64位,代码生成器会产生具有两个64位长类型的数组的结构。

typedef struct {unsigned long chunk [2];uint128m_t;

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

也可以看看

|

相关的话题