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