Если у вас есть лицензия 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' |
|
'ExportedDefine' | Объявляет переменную с директивой |
'ImportedExtern' | Объявляет переменную как |
'ImportedExternPointer' | Объявляет переменную как указатель |
Классы памяти имеют эти требования и ограничения:
Присвойте класс памяти глобальной переменной в функции, которая объявляет глобальную переменную. Вы не должны присваивать класс памяти больше чем в одной функции.
После того, как вы присвоите класс памяти глобальной переменной, вы не можете присвоить различный класс памяти той глобальной переменной.
Вы не можете присвоить класс памяти постоянной глобальной переменной.
Глобальная переменная с классом памяти ExportedDefine
должна быть скаляром, но не комплексным или скаляром многословным. Глобальная переменная должна только быть считана и не записана в в коде.
Если вы не присваиваете класс памяти глобальной переменной, за исключением местоположения объявления, переменная ведет себя как оно, имеет класс памяти 'ExportedGlobal'
. Для класса памяти 'ExportedGlobal'
глобальная переменная объявляется в файле
. Когда глобальная переменная не имеет класса памяти, переменная объявляется в файле entry_point_name.h
.entry_point_name_data.h