exponenta event banner

Структура генерируемого примера C/C + + Основная функция

При создании приложения, использующего сгенерированный код C/C + +, необходимо предоставить основную функцию C/C + +, вызывающую сгенерированный код.

По умолчанию для создания кода исходного кода C/C + +, статических библиотек, динамических библиотек и исполняемых файлов MATLAB ® Coder™ генерирует пример основной функции C/C + +. Эта функция является шаблоном, который может помочь включить сгенерированный код C/C + + в приложение. Пример основной функции объявляет и инициализирует данные, включая динамически распределенные данные. Он вызывает функции точки входа, но не использует значения, возвращаемые функциями точки входа. Чтобы использовать основную функцию примера, скопируйте основные исходные и заголовочные файлы примера в расположение за пределами папки сборки, а затем измените файлы в новом расположении в соответствии с требованиями приложения.

Кодер MATLAB генерирует исходные и заголовочные файлы для примера основной функции в examples подпапка папки построения. Для генерации кода C он генерирует файлы main.c и main.h. Для генерации кода C++ он генерирует файлы main.cpp и main.h.

Содержимое файла main.c или main.cpp

Для примера основной исходный файл main.c или main.cpp, кодер MATLAB генерирует следующие разделы:

По умолчанию кодер MATLAB также создает комментарии в основном исходном файле примера, которые могут помочь изменить основную функцию примера для использования в приложении.

Включить файлы

Этот раздел содержит заголовочные файлы, необходимые для вызова кода, отсутствующего в примере основного исходного файла. При вызове внешних функций при изменении примера основного исходного файла включите любые другие требуемые заголовочные файлы.

Объявления функций

В этом разделе описываются прототипы функций для инициализации аргументов и функций точки входа, определенных в примере основного исходного файла. Измените прототипы функций в соответствии с изменениями, внесенными в определения функций. Объявите новые прототипы функций для функций, определенных в примере основного исходного файла.

Функции инициализации аргументов

В этом разделе определяется функция инициализации для каждого типа данных, используемого функциями точки входа в качестве аргумента. Функция инициализации аргумента инициализирует размер аргумента до значения по умолчанию, а значения данных - до нуля. Затем функция возвращает инициализированные данные. Измените размер и значения данных в соответствии с требованиями приложения.

Для аргумента с размерами размера <dimSizes> и тип данных MATLAB C/C + +<baseType>, пример основного исходного файла определяет функцию инициализации с именем argInit_<dimSizes>_<baseType>. Например, для массива 5 на 5 с данными двойного типа MATLAB в примере основного исходного файла определяется функция инициализации аргумента argInit_5x5_real_T.

Кодер MATLAB изменяет имя функций инициализации аргументов следующим образом:

  • Если какой-либо из размеров имеет переменный размер, кодер MATLAB определяет размер этих размеров как d<maxSize>, где <maxSize> - максимальный размер этого измерения. Например, для массива с данными типа MATLAB двойной с первым измерением статического размера 2 и вторым измерением, которое может изменяться по размеру до 10, основной исходный файл примера определяет функцию инициализации аргумента argInit_2xd10_real_T.

  • Если какой-либо из размеров не ограничен, кодер MATLAB определяет размер этих размеров как Unbounded.

  • Если возвращаемым типом функции инициализации является emxArray, MATLAB Coder определяет функцию как возвращающую указатель на emxArray.

  • Если длина имени функции инициализации превышает максимальное количество символов, заданное для имен функций в настройках конфигурации, кодер MATLAB добавляет идентификатор перед именем функции. Затем кодер MATLAB усекает имя функции до максимально допустимого количества символов для длины идентификатора.

    Примечание

    По умолчанию максимальное количество символов, разрешенное для сгенерированных идентификаторов, равно 31. Чтобы задать значение, установленное для максимальной длины идентификатора, с помощью приложения Кодер MATLAB, выберите значение Максимальная длина идентификатора на вкладке Внешний вид кода параметров создания кода. Чтобы задать максимальное значение идентификатора с помощью интерфейса командной строки, измените значение MaxIdLength настройка объекта конфигурации.

Функции начального уровня

В этом разделе определяется функция для каждой функции точки входа MATLAB. Для функции MATLAB foo.m, пример основного исходного файла определяет функцию точки входа main_foo. Эта функция создает переменные и вызывает функции инициализации данных, которые являются исходной функцией C/C + +foo.c или foo.cpp требует. Она вызывает исходную функцию C/C + +, но не возвращает результат. Изменитьmain_foo таким образом, он принимает входные данные и возвращает выходные данные в соответствии с требованиями приложения.

Основная функция

В этом разделе определяется main функция, выполняющая следующие действия:

  • Если язык вывода - C, он объявляет и называет переменные argc и argv но бросает их в пустоту. Если языком вывода является C++, созданный пример main объявляет переменные, но не называет их. argc и argv.

  • Один раз вызывает каждую из функций точки входа.

  • Вызывает функцию завершения foo_terminate, которая названа для первой функции точки входа MATLAB foo объявлен для генерации кода. Вызовите функцию завершения только один раз, даже если в функции вызывается несколько функций точки входа. main.

  • Возвращает ноль.

По умолчанию пример main функция не вызывает функцию инициализации foo_initialize. Генератор кода включает в себя вызов функции инициализации в начале сгенерированных C/C + + входных функций. Созданный код также включает в себя проверки, чтобы убедиться, что функция инициализации вызывается автоматически только один раз, даже если существует несколько функций точки входа.

Можно не включать вызов функции инициализации в созданные функции точки входа. Чтобы сделать этот выбор, выполните одно из следующих действий:

  • В coder.CodeConfig или coder.EmbeddedCodeConfig объект, установка RunInitializeFcn кому false.

  • В приложении Кодер MATLAB на вкладке Все настройки установите параметр Автоматически запускать функцию инициализации в значение No.

Если вы сделаете этот выбор, пример main функция включает вызов функции инициализации foo_initialize.

См. раздел Использование сгенерированных функций инициализации и завершения.

Изменение функции main, включая входы и выходы main и функций начального уровня в соответствии с требованиями вашего приложения.

Содержимое файла main.h

Для примера основной файл заголовка main.h, кодер MATLAB генерирует следующее:

По умолчанию кодер MATLAB также генерирует комментарии в main.h это может помочь в изменении примера основной функции для использования в приложении.

Включить охрану

main.h использует защиту включения для предотвращения многократного включения содержимого файла. Защита включения содержит файлы включения и объявления функций в пределах #ifndef конструкция.

Включить файлы

main.h включает файлы заголовков, необходимые для вызова кода, который в нем не определен.

Объявления функций

main.h объявляет прототип функции для основной функции, определенный в примере основного исходного файла main.c или main.cpp.

Связанные примеры

Подробнее