文档

控制自定义数据类型的文件位置

默认情况下,当您使用数据类型对象时,例如金宝app仿真软件。AliasType金宝app仿真软件。公共汽车和自定义枚举指定信号和块参数的数据类型,从模型生成的代码定义了类型(例如,与typedef.语句)。为了简化生成的代码与其他现有代码的集成,并对生成的代码进行模块化,您可以通过调整对象的属性和枚举来控制类型定义的文件位置。

数据作用域和头文件

要控制生成代码中自定义类型定义的文件位置,请设置datascope.HeaderFile根据表设置数据类型对象的属性。类似地,对于在MATLAB中定义的枚举®的返回参数getDataScopegetHeaderFile方法。

  • typename.自定义数据类型的名称。

  • 文件名是头文件的名称。

  • 模型是模型的名称。

目标 指定datascope.作为 指定HeaderFile作为
将类型定义导出到模型_types.h 汽车
从创建的头文件导入类型定义,文件名 汽车或者进口 文件名(如有必要,应包括。H延期)
将类型定义导出到生成的头文件中,文件名。H 出口 文件名或者文件名。H
将类型定义导出到生成的头文件中,typename.。H 出口

导入数据类型定义时(例如,通过设置datascope.进口),所生成的模型的代码创建一个# include用于头文件的指令,以代替类型定义。提供包含该定义的头文件。

数据类型替换的注意事项

  • 如果您使用数据类型替换来替换内置的Simulink金宝app®在生成的代码中使用您自己的数据类型的数据类型(参见模型配置参数:代码生成数据类型替换),typedef.报表和# include指令出现在rtwtypes.h而不是模型_types.h

  • 当一个金宝app仿真软件。AliasType或者金宝app仿真软件。NumericType对象参与数据类型替换时,不能设置datascope.对象的属性出口.因此,如果你想要的代码生成器生成相应的typedef.语句,则无法控制该语句的文件位置。但是,您可以设置datascope.进口,这意味着您可以配置代码以重用typedef.外部代码提供的语句。

    作为一种变通方法,不使用数据类型对象作为数据类型替换,而是使用对象来设置模型中各个数据项的数据类型。要配置许多数据项,可以使用模型数据编辑器并利用数据类型传播和继承。有关更多信息,请参见基本数据类型的控件名称

导入数值复杂数据类型的定义

你可以用金宝app仿真软件。AliasType与数值复杂数据对象()。在这种情况下,如果(例如,通过设置配置生成的代码从您的外部代码导入类型定义datascope.财产进口),您的代码必须提供两个补充typedef.语句。

假设您的外部头文件myAliasTypes.h定义数据类型IAT_int32作为32位整数的别名。该文件必须定义两种类型:IAT_int32cIAT_int32

的#ifndef myAliasTypes_H_的#define myAliasTypes_H_的#include “rtwtypes.h” 的typedef int32_T IAT_int32;的typedef cint32_T cIAT_int32;# endif

您不需要创建两个金宝app仿真软件。AliasType对象。在这个例子中,你创建一个对象,IAT_int32.所生成的代码然后创建通过使用既复杂的数据(变量)IAT_int32cIAT_int32

宏警卫

当您将一个或多个数据类型定义导出到生成的头文件时,该文件包含表单的文件级宏保护RTW_HEADER_文件名_H

假设你使用多个金宝app仿真软件。AliasType对象:mySingleAliasmyDoubleAlias, 和myIntAlias这些属性:

  • datascope.设置为出口

  • HeaderFile设置为myTypes.h

当您生成代码,受保护的文件myTypes.h包含了typedef.声明:

#ifndef RTW_HEADER_myTypes_h_ #define RTW_HEADER_myTypes_h_ #include "rtwtypes.h" typedef real_T myDoubleAlias;typedef real32_T mySingleAlias;typedef int16_T myIntAlias;# endif

导出数据类型定义时模型_types.h,该文件包含以下形式的宏观后卫_DEFINED_TYPEDEF_FOR_typename._为每一个typedef.声明。假设你用a金宝app仿真软件。AliasType对象mySingleAlias这些属性:

  • datascope.设置为汽车

  • HeaderFile未指定

当您生成代码,文件模型_types.h包含谨慎typedef.陈述:

的#ifndef _DEFINED_TYPEDEF_FOR_mySingleAlias_的#define _DEFINED_TYPEDEF_FOR_mySingleAlias_的typedef real32_T mySingleAlias;# endif

另请参阅

||

相关话题