Когда вы создаете приложение, которое использует сгенерированный код 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 также генерирует комментарии в примере основной исходный файл, который может помочь вам изменить пример основная функция, чтобы использовать в вашем приложении.
Этот раздел включает заголовочные файлы, требуемые вызывать код, который не находится в примере основной исходный файл. Если вы вызываете внешние функции, когда вы изменяете пример основной исходный файл, включаете любые другие необходимые заголовочные файлы.
Этот раздел объявляет прототипов функции для инициализации аргумента и функций точки входа, которые заданы в примере основной исходный файл. Измените прототипов функции, чтобы совпадать с модификациями, которые вы делаете в функциональных определениях. Объявите новых прототипов функции для функций, что вы задаете в примере основной исходный файл.
Этот раздел задает функцию инициализации для каждого типа данных, что точка входа функционирует использование в качестве аргумента. Функция инициализации аргумента инициализирует размер аргумента к значению по умолчанию и значениям данных, чтобы обнулить. Функция затем возвращает инициализируемые данные. Измените их размер и значения данных, чтобы удовлетворить требования вашего приложения.
Для аргумента с размерностями размера <dimSizes>
и MATLAB тип данных C/C++ <baseType>
, пример основной исходный файл задает функцию инициализации с именем argInit_<dimSizes>_<baseType>
. Например, для массива 5 на 5 с данными типа MATLAB дважды, пример основной исходный файл задает функцию инициализации аргумента argInit_5x5_real_T
.
MATLAB Coder изменяет имя функций инициализации аргумента можно следующим образом:
Если какая-либо из размерностей является переменным размером, MATLAB Coder определяет размер этих размерностей как d<maxSize>
, где <maxSize>
максимальный размер той размерности. Например, для массива с данными MATLAB вводят дважды с первой размерностью статического размера 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++, сгенерированный основной пример объявляет, но не называет, переменные argc
и argv
.
Вызовы каждая точка входа функционируют однажды.
Вызывает оконечный функциональный foo_terminate
, который назван по имени первой функции точки входа MATLAB foo
объявленный для генерации кода. Вызовите оконечную функцию только однажды, даже если у вас есть несколько функций точки входа, вызванных в функциональном main
.
Возвращает нуль.
По умолчанию, пример main
функция не вызывает инициализировать функциональный foo_initialize
. Генератор кода включает вызов инициализировать функции в начале сгенерированных функций точки входа C/C++. Сгенерированный код также включает проверки, чтобы убедиться, что инициализировать функция вызвана автоматически только однажды, даже когда существует несколько функций точки входа.
Можно принять решение не включать вызов инициализировать функции в сгенерированных функциях точки входа. Чтобы сделать этот выбор, выполнить одно из следующих действий:
В 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
.