主要内容

用于代码生成的存储类MATLAB代码

如果你有嵌入式编码器®在生成的C/ c++代码中,您可以使用存储类来控制全局变量的声明和定义。

在代码生成的上下文中,a存储类在生成的代码中确定变量的声明和定义的规范。对于代码生成,术语存储类与C语言术语不同存储类说明符

存储类帮助您将生成的代码与外部代码集成。可以使生成的变量对外部代码可见。还可以使在外部代码中声明的变量对生成的代码可见。用于从MATLAB生成代码®代码中,只能使用全局变量的存储类。存储类决定:

  • 全局变量声明和定义的文件位置。

  • 全局变量是从外部代码导入还是导出供外部代码使用。

要将存储类分配给全局变量,请在MATLAB代码中使用coder.storageClass函数。只有当您使用Embedded Coder项目或配置对象生成C/ c++库或可执行文件时,代码生成器才会识别coder.storageClass调用。

的语法coder.storageClass是:

coder.storageClass(global_name, storage_class)

global_name全局变量的名称,指定为字符向量。global_name必须是编译时常数。

storage_class可以是以下值之一。

存储类 描述
“ExportedGlobal”
  • 属性中的变量变量定义部分的C文件entry_point_name。c

  • 声明变量为走读生变量声明部分的头文件entry_point_name。h

  • 初始化函数中的变量entry_point_name_initialize.h

“ExportedDefine”

声明变量#定义指令中的导出数据定义部分的头文件entry_point_name。h

“ImportedExtern”

声明变量为走读生变量声明部分的头文件entry_point_name_data.h。外部代码必须提供变量定义。

“ImportedExternPointer”

声明变量为走读生指针。变量声明部分的头文件entry_point_name_data.h。外部代码必须定义一个有效的指针变量。

存储类有以下要求和限制:

  • 将存储类赋给声明全局变量的函数中的全局变量。您不必在多个函数中分配存储类。

  • 将存储类分配给全局变量后,就不能将其他存储类分配给该全局变量。

  • 不能将存储类分配给常量全局变量。

  • 的全局变量ExportedDefine存储类必须是标量,但不能是复杂或多词标量。在代码中只能读取全局变量,不能写入全局变量。

如果没有将存储类分配给全局变量(除了声明位置之外),则该变量的行为就像具有“ExportedGlobal”存储类。对于一个“ExportedGlobal”存储类中,全局变量在文件中声明entry_point_name。h。当全局变量没有存储类时,将在文件中声明该变量entry_point_name_data.h

另请参阅

相关的话题