Если у вас есть лицензия 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