Классы памяти для генерации кода из кода 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_nameC.

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

  • Инициализирует переменную в функциональном 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_nameH. Когда глобальная переменная не имеет класса памяти, переменная объявляется в файле entry_point_name_data.h.

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

Похожие темы