API для сгенерированного повторно используемого кода

Когда вы генерируете повторно используемый код, MATLAB® Coder™ поддерживает динамическое выделение:

  • Функциональные переменные, которые являются слишком большими для стека

  • Персистентные переменные

  • Глобальные переменные

Это генерирует заголовочный файл, primary_function_name _types.h, который необходимо включать при использовании сгенерированного кода. Этот заголовочный файл содержит следующие структуры:

  • primary_function_name StackData

    Эта структура содержит выделенную пользователями память. Необходимо передать указатель на эту структуру как первый параметр ко всем функциям, которые используют его:

    • Непосредственно, потому что функция использует поле в структуре.

    • Косвенно, потому что функция передает структуру вызванной функции.

    Если алгоритм использует персистентные или глобальные данные, структура StackData primary_function_name также содержит указатель на структуру PersistentData primary_function_name. Если вы включаете этот указатель, только необходимо передать один параметр каждой вызывающей функции.

  • primary_function_name PersistentData

    Если ваш алгоритм использует персистентные или глобальные переменные, MATLAB Coder предоставляет отдельную структуру им. Структура выделения памяти содержит указатель на эту структуру. Поскольку у вас есть отдельная структура для персистентных и глобальных переменных, можно выделить память для этих переменных однажды и совместно использовать их со всеми потоками. Однако, если нет никакой связи между потоками, можно выделить память для этих переменных на поток.

Для получения дополнительной информации об использовании этих глобальных структур смотрите Многопоточные Примеры.