Структура Сгенерированного Примера 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.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.

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

Больше о