Классы памяти для генерации кода из кода MATLAB

Если у вас есть лицензия Embedded Coder®, можно использовать классы памяти, чтобы управлять объявлением и определением глобальной переменной в сгенерированном коде C/C++.

В контексте генерации кода storage class является спецификацией, которая определяет объявление и определение переменной в сгенерированном коде. Для генерации кода термин класс памяти не является тем же самым как термином языка C storage class specifier.

Классы памяти помогают вам интегрировать сгенерированный код с внешним кодом. Можно сделать сгенерированную переменную видимой к внешнему коду. Можно также сделать переменные объявленными во внешнем коде видимый к сгенерированному коду. Для генерации кода из кода 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'
  • Задает переменную в разделе Variable Definitions файла C entry_point_name.c.

  • Объявляет переменную как extern в разделе Variable Declarations заголовочного файла entry_point_name.h

  • Инициализирует переменную в функциональном entry_point_name_initialize.h.

'ExportedDefine'

Объявляет переменную с директивой #define в разделе Exported data define заголовочного файла entry_point_name .h.

'ImportedExtern'

Объявляет переменную как extern в разделе Variable Declarations заголовочного файла entry_point_name _data.h. Внешний код должен предоставить определение переменной.

'ImportedExternPointer'

Объявляет переменную как указатель extern в разделе Variable Declarations заголовочного файла entry_point_name _data.h. Внешний код должен задать допустимую переменную указателя.

Классы памяти имеют эти требования и ограничения:

  • Присвойте класс памяти глобальной переменной в функции, которая объявляет глобальную переменную. Вы не должны присваивать класс памяти больше чем в одной функции.

  • После того, как вы присвоите класс памяти глобальной переменной, вы не можете присвоить различный класс памяти той глобальной переменной.

  • Вы не можете присвоить класс памяти постоянной глобальной переменной.

  • Глобальная переменная с классом памяти ExportedDefine должна быть скаляром, но не комплексным или скаляром многословным. Глобальная переменная должна только быть считана и не записана в в коде.

Если вы не присваиваете класс памяти глобальной переменной, за исключением местоположения объявления, переменная ведет себя как оно, имеет класс памяти 'ExportedGlobal'. Для класса памяти 'ExportedGlobal' глобальная переменная объявляется в файле entry_point_name.h. Когда глобальная переменная не имеет класса памяти, переменная объявляется в файле entry_point_name_data.h.

Смотрите также

Похожие темы