Когда вы создаете приложение, которое использует сгенерированный код 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.cpp
MATLAB 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
.
Если тип возврата функции инициализации является emxArray
MATLAB 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.h
MATLAB Coder генерирует следующее:
По умолчанию MATLAB Coder также генерирует комментарии в main.h
это может помочь вам изменить пример основной функции, которая будет использоваться в вашем приложении.
main.h
использует защиту включения, чтобы предотвратить многократное включение содержимого файла. Защита от включения содержит файлы включения и объявления функций в #ifndef
конструировать.
main.h
включает заголовочные файлы, необходимые для вызова кода, который не определен в нем.
main.h
объявляет прототип функции для основной функции, которая задана в примере основного исходного файла main.c
или main.cpp
.