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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Если тип возврата функции инициализации является emxArrayMATLAB Coder задает функцию как возврат указателя на emxArray.

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

    Примечание

    По умолчанию максимальное количество символов, допустимое для сгенерированных идентификаторов, составляет 31. Чтобы задать набор значений для максимальной длины идентификатора с помощью приложения MATLAB Coder, выберите Maximum identifier length значение на вкладке Code Appearance настроек генерации кода. Чтобы задать набор значений для максимального идентификатора с помощью интерфейса командной строки, измените значение 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.

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

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

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

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

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

  • В coder.CodeConfig или coder.EmbeddedCodeConfig объект, задать RunInitializeFcn на false.

  • В приложении MATLAB Coder на вкладке All Settings установите значение Automatically run the initialize function No.

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

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

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

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

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

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

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

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

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

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

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

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

Похожие примеры

Подробнее о