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

См. также

Похожие темы