主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

MATLAB 代码生成代码的存储类

如果您有 Embedded Coder® 许可证,您可以使用存储类来控制生成的 C/C++ 代码中全局变量的声明和定义。

在代码生成的上下文中,存储类是一种规范,它决定了生成的代码中变量的声明和定义。对于代码生成,术语存储类与 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.cVariable Definitions 部分中的变量。

  • 将变量声明为头文件 entry_point_name.hVariable Declarations 部分中的 extern

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

'ExportedDefine'

使用头文件 entry_point_name.hExported data define 部分中的 #define 指令声明变量。

'ImportedExtern'

将变量声明为头文件 entry_point_name_data.hVariable Declarations 部分中的 extern。外部代码必须提供变量定义。

'ImportedExternPointer'

将变量声明为头文件 entry_point_name_data.hVariable Declarations 部分中的 extern 指针。外部代码必须定义有效的指针变量。

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

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

  • 为全局变量分配存储类别后,就不能为该全局变量分配不同的存储类别。

  • 您不能为常量全局变量分配存储类。

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

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

另请参阅

主题