选择存储类用于控制数据表示在生成的代码

一个存储类是您应用于模型数据,如信号,块参数和状态的代码生成设置。使用存储类,以控制生成的代码数据元素的外观。

该表显示内置存储类,您可以选择。这些存储类配万博1manbetx®编码器™

存储类名称 描述
汽车

汽车是默认的存储类设定为在模型中的每个数据元素。数据元素是受代码生成优化,这可以消除从代码的元件或改变元件的表示。有关这些优化,比如那些对信息配置参数>代码生成>优化窗格,请参阅如何生成的代码存储内部信号,状态和参数数据

优化不能消除一些数据,如大部分块的状态,从代码。这剩余的数据获取默认的存储类,你的代码映射编辑器指定(见配置默认代码生成数据(嵌入式编码) - 需要嵌入式编码®)。如果离开了存储类设置的代码映射编辑器为默认值,默认,数据元素显示为标准的数据结构的一个字段(见如何生成的代码存储内部信号,状态和参数数据)。

如果优化不能消除数据元素,在代码中元素的名称是根据命名规则,你与模型的配置参数指定(见标识格式控制(嵌入式编码) - 需要嵌入式编码)。

使用此存储类,以使优化的数据元素进行操作,有可能产生更有效的代码。

默认模式

数据元素获得您用代码映射编辑器中指定相应的默认存储类。在代码中的数据元素的名称是相同的模型中的名称。

使用这个存储类,以防止从优化消除存储的数据元素(见如何生成的代码存储内部信号,状态和参数数据)。

ExportedGlobal

产生一个全局变量定义和声明。变量的名称是数据元素的名称。代码声明在生成的文件中的变量模型。H,它可以包括:(#包括)在你的外部代码。

ImportedExtern

生成的代码读取和写入到您的外部代码定义一个全局变量。所生成的代码声明在所生成的文件中的变量模型_private.h因此,该模型的入口点函数可以读取和写入该变量。

使用这个存储类,使模型中的数据元素代表了一个全局变量,你的外部代码定义。生成的算法代码使用变量而不定义它。

ImportedExternPointer

生成的代码读取和写入到您的外部代码定义的全局指针变量。所生成的代码声明在所生成的文件中的变量模型_private.h并读取和通过解引用指针写入数据。

当你的外部代码定义了一个数据元素,并且提供一个指针用于访问数据使用这个存储类。

如果您有嵌入式编码,也可以选择额外的内置存储类,在接下来的表中所示。

存储类名称 描述 使用信号或国家数据 使用的参数数据

位域

生成的结构是,在命名位字段存储布尔数据。对于一个示例,请参见位字段(嵌入式编码)。

你不能在代码映射编辑器使用这个存储类。

CompilerFlag

万博1manbetx支撑预处理器通过编译器标志或选项定义的条件语句。看到产生变系统预处理条件(嵌入式编码)。

如果你建立使用嵌入式编码生成的代码(您清除配置参数>仅生成代码),到指定编译器选项,您可以使用该模型配置参数配置参数>代码生成>自定义代码>其他构建信息>定义。看到代码生成面板:自定义代码:其它构建信息:定义

没有

常量

产生一个全局变量定义和申报与常量类型限定符。

没有

ConstVolatile

产生一个全局变量定义和申报与常量挥发物类型修饰符。对于一个示例,请参见类型限定符(嵌入式编码)。

没有

限定

产生宏(#限定指令)如#定义myParam 5。对于一个示例,请参见宏定义(#定义)(嵌入式编码)。

没有

ExportToFile

产生一个全局变量定义和声明。您可以指定定义和声明变量的文件的名称。

FileScope

产生一个全局变量定义和申报与静态的类型限定符。在所生成的代码中,变量的范围仅限于当前文件,其通常是模型。C

在一个模型中的参考分层结构中,如果参考模型使用一个参数的对象(如万博1manbetxSimulink.Parameter),您在基地工作区或数据字典创建,也可以不适用FileScope对象。作为一种变通方法,移动参数对象插入到引用模型的模型工作区。然后,你可以使用FileScope

GETSET 生成的代码进行交互的数据通过调用您的自定义存取函数。您的外部代码定义的数据,并提供功能定义。举例来说,看到访问的数据通过与存储类GETSET功能(嵌入式编码)。

ImportedDefine 生成一个使用宏代码(#限定指令)定义在头文件在你的外部代码。对于一个示例,请参见宏定义(#定义)(嵌入式编码)。

没有

ImportFromFile

生成的代码读取和写入到您的外部代码定义一个全局变量。相似ExportToFile,但生成的代码没有定义的变量。

可重复使用

产生更有效的代码,在一个单一的,重复使用的全局变量的数据路径(串联连接的块)的存储中间计算。对于一个示例,请参见利用Simulink.Signal对象指定缓冲区重用万博1manbetx(嵌入式编码)。

你可以把这个存储类仅一个万博1manbetxSimulink.Signal对象,表示在一个模型中的多个信号线。

没有

结构

产生一个全球性的结构,它的名字可以指定。举例来说,看到组织参数数据到一个结构通过结构存储类(嵌入式编码)和信号的结构(嵌入式编码)。

你不能在代码映射编辑器使用这个存储类。

挥发物

产生一个全局变量定义和申报与挥发物类型限定符。

本地化 对于信号,如果可能的话,产生的本地函数,而不是在全球存储变量。产生局部变量防止代码生成从执行从所生成的代码中删除变量的优化。对于一个示例,请参见生成具有本地化存储类局部变量(嵌入式编码)。 是的(信号未规定) 没有

这些存储类,你可以添加到嵌入式编码字典存储类的实例。这些例子的定义,当你准备代码生成使用快速启动工具的模型提供。

存储类名称 描述 使用信号或国家数据 使用的参数数据
ParamStruct

生成包含参数数据的全球结构。在组分(引用的模型或原子子系统)的层次结构,则可以使用该实施例中的存储类来创建参数结构的相应层次结构。该存储类仅出现在代码映射编辑的数据类别型号参数准备代码生成的模型与快速启动工具之后。

没有
SignalStruct

生成包含信号或状态数据的全球结构。在组分(引用的模型或原子子系统)的层次结构,则可以使用该实施例中的存储类来创建信号和状态结构中的对应的层次结构。该存储类只出现在代码映射编辑器编写代码生成一个模型,快速启动工具之后。

没有

当你产生折返,多实例代码,限制和约束,如果你想使用存储类应用。看到使用Storage类的重入,多实例模型和组件

指定文件名和其它的数据属性随着存储类(嵌入式编码

在应用一些存储类,如ExportToFile,你可以指定其他设置,如声明(头)和定义文件名。在代码映射编辑器,访问这些额外的设置,您可以使用属性检查器。

与其他存储类,你不能指定其他设置。

  • 这些内置万博1manbetxSimulink的编码器存储类不允许你指定其他设置:

    • ExportedGlobal

    • ImportedExtern

    • ImportedExternPointer

  • 内置嵌入式编码存储类通常允许您指定的声明和定义文件名。

  • 为了ExportToFile存储类,定义文件设置仅单实例模型荣幸。因为数据定义是在父级别处理的设置是可重复使用的多实例模型忽略。

  • 当你创建一个自定义存储类设计存储类,可以选择存储类的用户是否可以指定其他设置。看到允许存储类的用户指定属性值(嵌入式编码)。

指定默认#包括语法头文件申报资料(嵌入式编码

要控制的数据项,的文件放置诸如信号线或块的状态,在所生成的代码,则可以应用的存储类的数据项(参见应用内置和定制的存储类数据元素(嵌入式编码))。然后使用头文件自定义属性来指定包含的数据的声明所生成的或外部的头文件。

为了减少维护工作量和数据录入,当您指定头文件,你可以省略分隔符(要么<>)和仅使用文件名。然后,您可以控制默认的分隔符,生成的代码使用相应的#包括指令。要使用默认设置尖括号配置参数>代码生成>代码布局>#包括文件分隔符的#include

存储类限制

  • 当您使用的代码映射编辑器(嵌入式编码)存储类,有一些限制。看到约束(嵌入式编码)。

  • 数据对象不能使用嵌入式编码存储类和多字数据类型。

  • 对于模型嵌入式编码器的存储类,使用参考模型:

    • 如果应用分组存储类多个数据项,存储类数据范围属性必须设置为进口你必须提供一个外部头文件中的数据声明。分组存储类使用单个变量在所生成的代码来表示的多个数据对象。例如,存储类位域结构分组存储类。

    • 如果基工作区或数据字典中存在参数对象和参考模型使用对象,你可以不适用的存储类FileScope。作为一种变通方法,将对象移动到所述参考模型的模型工作区。然后,你可以使用FileScope

  • 你可以不适用的存储类FileScope要由数据交换接口使用的数据项(C API,外部模式,或ASAP2)或MAT-文件记录。文件范围的数据是不是外部访问。

相关话题