coder.EmbeddedCodeConfig

Параметры конфигурации для генерации кода C/C++ из кода MATLAB с Embedded Coder

Описание

coder.EmbeddedCodeConfig объект содержит параметры конфигурации это codegen использование для генерации статической библиотеки, динамически подключаемой библиотеки или исполняемой программы с Embedded Coder®. Передайте объект codegen функция при помощи -config опция.

Создание

Создайте coder.EmbeddedCodeConfig объект при помощи coder.config функция.

Если вы создаете coder.EmbeddedCodeConfig объект, можно изменить его свойства программно в командной строке или в интерактивном режиме при помощи Диалогового окна Параметра конфигурации. Смотрите Задают Параметры конфигурации в Рабочем процессе Командной строки В интерактивном режиме.

Свойства

развернуть все

Компиляторная оптимизация или параметры настройки отладки для набора инструментальных средств в виде одного из значений в этой таблице.

ЗначениеОписание
'Faster Builds'

Оптимизирует сборку в течение более коротких времен сборки.

'Faster Runs'

Оптимизирует сборку для более быстрых рабочих исполняемых файлов.

'Debug'

Оптимизирует сборку для отладки.

'Specify'

Включает CustomToolchainOptions свойство для индивидуальной настройки настроек для инструментов в выбранном наборе инструментальных средств. Если Toolchain свойство установлено в 'Automatically locate an installed toolchain', затем установка BuildConfiguration к 'Specify' изменения Toolchain к расположенному набору инструментальных средств.

Оптимизация динамического массива в виде одного из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

Генератор кода улучшает время выполнения сгенерированного кода C путем оптимизации доступа к динамическому массиву.

false

Генератор кода не оптимизирует доступ к динамическому массиву.

Смотрите оптимизируют динамический массив доступ.

Уровень кастинга типа данных для переменных в сгенерированном коде C/C++ в виде одного из значений в этой таблице.

ЗначениеОписание
'Nominal'

Это значение является значением по умолчанию.

Генерирует код C/C++, который использует кастинг типа данных компилятора C по умолчанию. Например:

short addone(short x)
{
  int i;
  i = x + 1;
  if (i > 32767) {
    i = 32767;
  }

  return (short)i;
}

'Standards'

Генерирует код C/C++, который бросает типы данных, чтобы соответствовать MISRA® стандарты. Например:

short addone(short x)
{
  int i;
  i = (int)x + (int)1;
  if (i > (int)32767) {
    i = (int)32767;
  }

  return (short)i;
}

'Explicit'

Генерирует код C/C++, который бросает значения типа данных явным образом. Например:

short addone(short x)
{
  int i;
  i = (int)x + 1;
  if (i > 32767) {
    i = 32767;
  }

  return (short)i;
}

Смотрите броски типа данных управления в сгенерированном коде (Embedded Coder).

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

ЗначениеОписание
'Generate'

Это значение является значением по умолчанию.

Создает clang-format файл для вашей сборки на основе ваших параметров конфигурации. clang-format файл сгенерирован в codegen папка.

'Existing'

Форматирует сгенерированный код при помощи clang-format файл по вашему выбору. Используя clang-format включает подробное управление форматированием вашего сгенерированного кода.

Генератор кода ищет существующий clang-format файл в папке генерации кода и затем дереве папки выше папки генерации кода. Генератор кода ищет файлы, имя которых включает _clang-format или .clang-format файл, который это находит. Если это не может найти необходимый файл, генератор кода использует встроенную спецификацию формата.

Для получения дополнительной информации см. https://clang.llvm.org/docs/ClangFormatStyleOptions.html.

Время выполнения профилируя во время программного обеспечения в цикле (SIL) или процессор в цикле (PIL) выполнение в виде одного из значений в этой таблице.

ЗначениеОписание
false

Это значение является значением по умолчанию.

Отключает время выполнения, профилируя во время SIL или выполнения PIL.

trueВключает время выполнения, профилируя во время SIL или выполнения PIL.

Смотрите, что время выполнения профилирует для SIL и PIL (Embedded Coder).

Параметры форматирования кода для сгенерированного кода в виде одного из значений в таблице.

ЗначениеОписание
'Clang-format'

Генератор кода форматирует сгенерированный код согласно clang-format файл.

'Auto'

Использует внутреннюю эвристику, чтобы определить, отформатирован ли сгенерированный код clang-format или MathWorks® форматирование инструмента.

Определить, отформатирован ли сгенерированный код clang-format, в a coder.config объект, набор Verbosity опция к 'Verbose'.

'MathWorks'

Заставляет генератор кода возвращаться к инструменту форматирования MathWorks.

Шаблон генерации кода для файла и функциональных баннеров в сгенерированном коде. По умолчанию, CodeTemplate пусто, и генератор кода производит баннеры по умолчанию. Чтобы произвести пользовательские баннеры, установите CodeTemplate к coder.MATLABCodeTemplate объект создается из файла шаблона генерации кода (CGT). Смотрите Генерируют Пользовательский Файл и Функциональные Баннеры для Кода C/C++ (Embedded Coder).

Заменяющая библиотека кода для сгенерированного кода в виде одного из значений в этой таблице:

ЗначениеОписание
'None'

Это значение является значением по умолчанию.

Не пользуется заменяющей библиотекой кода.

Названная заменяющая библиотека кода

Генерирует вызовы определенной платформы, компилятора или заменяющей библиотеки стандартов кода. Список именованных библиотек зависит от:

  • Установленные пакеты поддержки.

  • Системный конечный файл, язык, стандарт языка и настройка поставщика устройства.

  • Создали ли вы и указали заменяющие библиотеки кода, с помощью продукта Embedded Coder.

Совместимые библиотеки зависят от этих параметров:

  • TargetLang

  • TargetLangStandard

  • ProdHWDeviceType в объекте настройки аппаратной реализации.

Embedded Coder предлагает больше библиотек и способность создать и пользоваться заменяющими библиотеками пользовательского кода.

MATLAB® Coder™ генерирует минимальный набор #include операторы для заголовочных файлов требуются выбранной заменяющей библиотекой кода.

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

Примечание

Программное обеспечение MATLAB Coder не поддерживает коллбэки TLC.

Максимальное количество столбцов перед разрывом строки в сгенерированном коде в виде положительного целого числа в области значений [45, 65536].

Другие правила для размещения разрыва строки могут быть более приоритетны по сравнению с пределом столбца, который вы задаете.

Прокомментируйте стиль в сгенерированном коде в виде одного из значений в этой таблице.

ЗначениеОписание
'Auto' Для C сгенерируйте многострочные комментарии. Для C++ сгенерируйте однострочные комментарии.
'Single-line'Сгенерируйте однострочные комментарии, которым предшествует //.
'Multi-line'Сгенерируйте один или многострочные комментарии, разграниченные /* и */.

Для генерации кода C задайте однострочный стиль комментария, только если ваш компилятор поддерживает его.

Зависимость: GenerateComments включает этот параметр.

Смотрите Задают Стиль Комментария для Кода C/C++ (Embedded Coder).

Максимальное количество функциональных специализаций для рекурсии времени компиляции в виде положительного целого числа. Чтобы запретить рекурсию в коде MATLAB, установите CompileTimeRecursionLimit к 0. Предел рекурсии времени компиляции по умолчанию является достаточно большим для большинства рекурсивных функций, которые требуют этого типа рекурсии. Если генерация кода перестала работать из-за предела рекурсии времени компиляции, и вы хотите рекурсию времени компиляции, пытаетесь увеличить предел. В качестве альтернативы измените свой код MATLAB так, чтобы генератор кода использовал рекурсию во время выполнения. Смотрите Достигнутый Предел Рекурсии Времени компиляции.

Максимальное количество инструкций, что постоянная папка выполняется. В некоторых ситуациях генерация кода требует, чтобы конкретные инструкции были постоянными. Если сворачивание констант останавливается, прежде чем эти инструкции постоянно свернуты, сбои генерации кода. В этом случае увеличьте значение ConstantFoldingTimeout.

Смотрите оптимизацию MATLAB Coder в сгенерированном коде.

Преобразование if-elseif-else шаблоны к switch-case операторы в сгенерированном коде в виде одного из значений в этой таблице.

ЗначениеОписание
false

Это значение является значением по умолчанию.

Генератор кода не преобразует if-elseif-else шаблоны к switch-case операторы.

trueГенератор кода пытается преобразовать if-elseif-else шаблоны к switch-case операторы. Генератор кода производит switch-case оператор, только если все потенциальные выражения случая являются скалярными целочисленными значениями.

Смотрите стиль кода С управления (Embedded Coder).

Имя интерфейсного класса, когда вы генерируете Код С++ с CppInterfaceStyle установите на 'Methods'. В этом случае сгенерированный код для функций точки входа MATLAB состоит из методов, содержавшихся в классе C++ с именем, заданным CppInterfaceClassName. Это свойство не оказывает влияния, когда вы устанавливаете CppInterfaceStyle к 'Functions'.

Смотрите генерируют код С++ с интерфейсом класса.

Стиль интерфейса к сгенерированному Коду С++ для функций точки входа MATLAB, от которых вы генерируете код. По умолчанию функции точки входа становятся функциями C++. Если вы выбираете 'Methods', затем функции точки входа становятся методами в классе C++. Задайте имя класса при помощи свойства CppInterfaceClassName.

Смотрите генерируют код С++ с интерфейсом класса.

Зависимость:

  • Установка TargetLang к 'C++' включает этот параметр.

Сгенерировать ли пространства имен C++ для пакетов в вашем коде MATLAB в виде одного из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

Генератор кода производит пространства имен C++ для пакетов в вашем коде MATLAB. Смотрите Организуют Сгенерированный Код С++ в Пространства имен.

false

Генератор кода не производит пространства имен C++ для пакетов в вашем коде MATLAB.

Зависимость:

  • Установка TargetLang к 'C++' включает этот параметр.

Типы данных: логический

Пространство имен для сгенерированного Кода С++. Генератор кода не производит код в пространстве имен, если вы не задаете непустой вектор символов.

Смотрите организуют сгенерированный код С++ в пространства имен.

Зависимость:

  • Установка TargetLang к 'C++' включает этот параметр.

Пространство имен для Кода С++ сгенерировано для кода MathWorks. Генератор кода не производит такое пространство имен, если вы задаете это свойство как пустой символьный вектор.

Смотрите организуют сгенерированный код С++ в пространства имен.

Зависимость:

  • Установка TargetLang к 'C++' включает этот параметр.

Типы данных: char

Сгенерировать ли классы C++, или C разрабатывают структуры для классов MATLAB в виде одного из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

Генератор кода производит классы C++ для классов MATLAB. Смотрите Генерируют Классы C++ для Классов MATLAB.

false

Генератор кода производит структуры стиля C для классов MATLAB.

При использовании GPU Coder™ генератор кода всегда отключает этот параметр.

Зависимость:

  • Установка TargetLang к 'C++' включает этот параметр.

Типы данных: логический

Класс коллбэка для библиотеки BLAS вызывает в коде, сгенерированном для определенного низкоуровневого вектора и операций над матрицей в коде MATLAB в виде вектора символов.

Если вы задаете класс коллбэка BLAS для определенных низкоуровневых векторных и матричных функций, генератор кода производит вызовы BLAS при помощи интерфейса C CBLAS к вашей библиотеке BLAS. Класс коллбэка обеспечивает имя вашего заголовочного файла CBLAS, имена типов данных CBLAS и информацию, запрошенную, чтобы соединиться с вашей библиотекой BLAS. Если этот параметр пуст, генератор кода производит код для матричных функций вместо вызова BLAS.

Смотрите ускоряют Матричные операции в сгенерированном автономном коде при помощи вызовов BLAS.

Макрос, который задает индивидуальную настройку сгенерированных имен файлов с дополнительными символами и лексемами. Для получения дополнительной информации смотрите, Настраивают Имена файлов C/C++, Сгенерированные из кода MATLAB (Embedded Coder).

Класс коллбэка для библиотеки FFTW вызывает в коде, сгенерированном для функций БПФ в коде MATLAB в виде вектора символов.

Чтобы улучшить скорость выполнения функций БПФ, генератор кода производит вызовы библиотеки FFTW, которую вы задаете в классе коллбэка. Если этот параметр пуст, генератор кода использует свои собственные алгоритмы для функций БПФ вместо того, чтобы вызвать библиотеку FFTW.

Смотрите ускоряют быстрые преобразования Фурье в сгенерированном автономном коде при помощи вызовов библиотеки FFTW.

Пользовательский код, который появляется около верхней части каждого заголовочного файла C/C++, сгенерированного из вашего кода MATLAB, кроме rtwtypes.h и rtwhalf.hВ виде вектора символов.

Включайте папки, чтобы добавить к включать пути при компиляции сгенерированного кода. Укажите, что список включает папки как массив строк, массив ячеек вектора символов или вектора символов.

Несколько имен папок в виде одного из значений в этой таблице.

ЗначениеОписание
Массив строк

Массив строк в CustomInclude. Например, cfg.CustomInclude = ["C:\Project","C:\Custom Files"];

Массив ячеек из символьных векторов

Массив ячеек из символьных векторов в CustomInclude. Например, cfg.CustomInclude = {'C:\Project','C:\Custom Files'};

Символьный вектор

Отдельный включают папки a pathsep символ в CustomInclude. Например, cfg.CustomInclude = ['C:\Project' pathsep 'C:\Custom Files'];

Примечание

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

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

Класс коллбэка для библиотеки LAPACK вызывает в коде, сгенерированном для определенных функций линейной алгебры в коде MATLAB в виде вектора символов.

Если вы задаете класс коллбэка LAPACK для определенных функций линейной алгебры, генератор кода производит вызовы LAPACK при помощи интерфейса C LAPACKE к вашей библиотеке LAPACK. Класс коллбэка обеспечивает имя вашего заголовочного файла LAPACKE и информации, запрошенной, чтобы соединиться с вашей библиотекой LAPACK. Если этот параметр пуст, генератор кода производит код для функций линейной алгебры вместо вызова LAPACK.

Смотрите ускоряют линейную алгебру в сгенерированном автономном коде при помощи вызовов LAPACK.

Статические файлы библиотеки, чтобы соединиться со сгенерированным кодом в виде массива строк, массива ячеек вектора символов или вектора символов.

Несколько статических имен файлов библиотеки в виде одного из значений в этой таблице.

ЗначениеОписание
Массив строк

Массив строк в CustomLibrary. Например, cfg.CustomLibrary = ["myLib1.lib","myLib2.lib"];

Массив ячеек из символьных векторов

Массив ячеек из символьных векторов в CustomLibrary. Например, cfg.CustomLibrary = {'myLib1.lib','myLib2.lib'};

Символьный вектор

Разделите статические имена файлов библиотеки a pathsep символ в CustomLibrary. Например, cfg.CustomLibrary = ['myLib1.lib' pathsep 'myLib2.lib'];

Примечание

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

Исходные файлы, чтобы скомпилировать и соединиться со сгенерированным кодом в виде массива строк, массива ячеек вектора символов или вектора символов.

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

Предположим, что вы задаете foo.cpp как исходный файл. Если foo.c и foo.cpp находятся оба на пути поиска файлов, вы не можете быть уверены, использует ли процесс сборки foo.c или foo.cpp.

Несколько имен исходного файла в виде одного из значений в этой таблице.

ЗначениеОписание
Массив строк

Массив строк в CustomSource. Например, cfg.CustomSource = ["mySrc1.c","mySrc2.c"];

Массив ячеек из символьных векторов

Массив ячеек из символьных векторов в CustomSource. Например, cfg.CustomSource = {'mySrc1.c','mySrc2.c'};

Символьный вектор

Отдельный исходный файл называет a pathsep символ в CustomSource. Например, cfg.CustomSource = ['mySrc1.c' pathsep 'mySrc2.c'];

Примечание

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

Укажите, что код, чтобы появиться около верхней части каждого сгенерировал .c или .cpp файл (кроме rtwhalf.c или rtwhalf.cpp), за пределами любой функции. Задайте код как вектор символов.

Не задавайте статическое функциональное определение C.

Пользовательский формат идентификатора для сгенерированных Типов массива EMX (Встраиваемые типы mxArray) в виде вектора символов. Чтобы задать формат, смотрите, Настраивают Сгенерированные Идентификаторы (Embedded Coder).

Пользовательский формат идентификатора для сгенерированного Массива EMX (Встраиваемый mxArrays) служебные функции в виде вектора символов. Чтобы задать формат, смотрите, Настраивают Сгенерированные Идентификаторы (Embedded Coder).

Пользовательский формат идентификатора для сгенерированных идентификаторов локальной функции в виде вектора символов. Чтобы задать формат, смотрите, Настраивают Сгенерированные Идентификаторы (Embedded Coder).

Пользовательский формат идентификатора для сгенерированных имен полей в глобальных идентификаторах типов в виде вектора символов. Чтобы задать формат, смотрите, Настраивают Сгенерированные Идентификаторы (Embedded Coder).

Пользовательский формат идентификатора для сгенерированных идентификаторов глобальной переменной в виде вектора символов. Чтобы задать формат, смотрите, Настраивают Сгенерированные Идентификаторы (Embedded Coder).

Пользовательский формат идентификатора для сгенерированных постоянных макро-идентификаторов в виде вектора символов. Чтобы задать формат, смотрите, Настраивают Сгенерированные Идентификаторы (Embedded Coder).

Пользовательский формат идентификатора для сгенерированных локальных идентификаторов временной переменной в виде вектора символов. Чтобы задать формат, смотрите, Настраивают Сгенерированные Идентификаторы (Embedded Coder).

Пользовательский формат идентификатора для сгенерированных глобальных идентификаторов типов в виде вектора символов. Чтобы задать формат, смотрите, Настраивают Сгенерированные Идентификаторы (Embedded Coder).

Код, который появляется в сгенерированной оконечной функции в виде вектора символов.

Пользовательские настройки для инструментов в выбранном наборе инструментальных средств в виде массива ячеек.

Зависимости:

  • Toolchain свойство определяет, какие инструменты и опции появляются в массиве ячеек.

  • Установка BuildConfiguration свойство к Specify включает CustomToolchainOptions.

Во-первых, получите текущие настройки. Например:

cfg = coder.config('lib');
cfg.BuildConfiguration='Specify';
opt = cfg.CustomToolchainOptions

Затем отредактируйте значения в opt.

Эти значения выводят из файла определения набора инструментальных средств и сторонних параметров компилятора. Смотрите Пользовательскую Регистрацию Набора инструментальных средств.

Замена типа данных в сгенерированном коде в виде одного из значений в этой таблице.

ЗначениеОписание
'CBuiltIn'

Это значение является значением по умолчанию.

Генератор кода использует встроенные типы данных C.

'CoderTypeDefs'Генератор кода использует предопределенные типы данных от rtwtypes.h

Объект Configuration для генерации кода для нейронных сетей для глубокого обучения в виде заданного как один из объектов в этой таблице.

ОбъектТребуетОписание
coder.MklDNNConfig

  • Deep Learning Toolbox™

  • Интерфейс MATLAB Coder для пакета поддержки Библиотек Глубокого обучения

coder.MklDNNConfig объект содержит параметры, характерные для генерации Кода С++ для использования глубокого обучения Intel® MKL-DNN. Создать coder.MklDNNConfig объект, использовать coder.DeepLearningConfig. Например:

cfg = coder.config('mex');
cfg.TargetLang = 'C++';
cfg.DeepLearningConfig = coder.DeepLearningConfig('mkldnn');

Смотрите генерацию кода для нейронных сетей для глубокого обучения с MKL-DNN.

coder.ARMNEONConfig

  • Deep Learning Toolbox

  • Интерфейс MATLAB Coder для пакета поддержки Библиотек Глубокого обучения

coder.ARMNEONConfig объект содержит параметры, характерные для генерации Кода С++ для глубокого обучения с помощью ARM® Вычислите Библиотеку. Создать coder.ARMNEONConfig объект, использовать coder.DeepLearningConfig. Например:

cfg = coder.config('lib');
cfg.TargetLang = 'C++';
cfg.DeepLearningConfig = coder.DeepLearningConfig('arm-compute');

Смотрите, что генерация кода для нейронных сетей для глубокого обучения с ARM вычисляет библиотеку.

coder.CuDNNConfig (GPU Coder)

  • Deep Learning Toolbox

  • GPU Coder

  • Интерфейс GPU Coder для пакета поддержки Библиотек Глубокого обучения

coder.CuDNNConfig объект содержит параметры, характерные для CUDA® генерация кода для глубокого обучения, пользующегося cuDNN библиотекой. Создать coder.CuDNNConfig объект, использовать coder.DeepLearningConfig. Например:

cfg = coder.gpuConfig('lib');
cfg.TargetLang = 'C++';
cfg.DeepLearningConfig = coder.DeepLearningConfig('cudnn');

Смотрите Генерацию кода для Нейронных сетей для глубокого обучения при помощи cuDNN (GPU Coder).

coder.TensorRTConfig (GPU Coder)

  • Deep Learning Toolbox

  • GPU Coder

  • Интерфейс GPU Coder для пакета поддержки Библиотек Глубокого обучения

coder.TensorRTConfig объект содержит параметры, характерные для генерации кода CUDA для глубокого обучения, пользующегося библиотекой TensorRT. Создать coder.TensorRTConfig объект, использовать coder.DeepLearningConfig. Например:

cfg = coder.gpuConfig('lib');
cfg.TargetLang = 'C++';
cfg.DeepLearningConfig = coder.DeepLearningConfig('tensorrt');

Смотрите генерацию кода для нейронных сетей для глубокого обучения при помощи TensorRT (GPU Coder).

Зависимость: если DeepLearningConfig установлен, codegen наборы TargetLang к C++.

Описание объекта в виде вектора символов.

Режим динамического выделения памяти в виде одного из значений в этой таблице.

ЗначениеОписание
'Threshold'

Это значение является значением по умолчанию.

Генератор кода выделяет память динамически на куче для массивов переменного размера, размер которых (в байтах) больше или равен DynamicMemoryAllocationThreshold.

'AllVariableSizeArrays'Генератор кода динамически выделяет память для всех массивов переменного размера на куче.
'Off'

Генератор кода статически выделяет память для массивов переменного размера на стеке.

Неограниченные массивы переменного размера требуют динамического выделения памяти.

Зависимости:

  • EnableVariableSizing включает этот параметр.

  • Установка этого DynamicMemoryAllocation к 'Threshold' включает DynamicMemoryAllocationThreshold параметр.

Смотрите генерируют код для данных Переменного Размера.

Реализация динамически выделенного массива в интерфейсе сгенерированного C/C++ функционирует в виде одного из значений в этой таблице.

ЗначениеОписание
'Auto'

Это - значение по умолчанию. Если вы устанавливаете TargetLang параметр к 'C++' или 'C', это значение соответственно ведет себя как тот же флаг.

'C'

Сгенерированный код использует стиль C emxArray структура данных, чтобы реализовать динамически выделенные массивы. Смотрите Использование C Массивы в Сгенерированных Функциональных Интерфейсах.

'C++'

Если вы устанавливаете TargetLang параметр к 'C', это значение отключено.

Сгенерированный код использует coder::array шаблон класса, чтобы реализовать динамически выделенные массивы. Смотрите Использование Динамически Выделенные Массивы C++ в Сгенерированных Функциональных Интерфейсах.

При использовании GPU Coder генератор кода всегда использует стиль C emxArray структура данных.

Зависимость:

  • EnableVariableSizing включает этот параметр.

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

Зависимость:

  • Установка DynamicMemoryAllocation к 'Threshold' включает этот параметр.

Смотрите генерируют код для данных Переменного Размера.

Автоматические внешние вызовы функции в виде одного из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

Генератор кода обрабатывает некоторые общие функции визуализации, когда значение внешних параметров функционирует. Вы не должны объявлять эти функции как значение внешних параметров при помощи coder.extrinsic. Эта возможность уменьшает количество времени, что вы тратите создание вашего кода, подходящего для генерации кода.

falseГенератор кода не обрабатывает общие функции визуализации, когда значение внешних параметров функционирует, если вы не объявляете их как значение внешних параметров при помощи coder.extrinsic

Некоторые общие функции визуализации plot, disp, и figure. Смотрите используют MATLAB Engine, чтобы выполнить вызов функции в сгенерированном коде.

Автоматическое распараллеливание for циклы, столь же заданные как одно из значений в этой таблице.

ЗначениеОписание
false

Это значение является значением по умолчанию.

Генератор кода автоматически не параллелизирует for циклы.

true

Генератор кода автоматически параллелизирует for циклы в сгенерированном коде. Автоматическое распараллеливание может значительно улучшить скорость выполнения сгенерированного кода. Смотрите Автоматически Параллелизируют циклы for в Сгенерированном коде.

При использовании GPU Coder генератор кода всегда включает автоматическое распараллеливание for циклы.

Типы данных: логический

Пользовательские имена для типов данных MATLAB в сгенерированном коде C/C++ в виде одного из значений в таблице.

ЗначениеОписание
false

Это значение является значением по умолчанию.

Пользовательские имена для типов данных MATLAB не позволены.

true

Пользовательские имена для типов данных MATLAB позволены. Задайте пользовательские имена при помощи ReplacementTypes. Установка EnableCustomReplacementTypes к true включает ReplacementTypes параметр.

Возможности неявного расширения в сгенерированном коде в виде одного из значений перечислены в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

Генератор кода включает неявное расширение в сгенерированном коде. Генератор кода включает модификации в сгенерированный код, чтобы применить неявное расширение. Смотрите Совместимые Размеры Массивов для Основных Операций.

false

Сгенерированный код не следует правилам неявного расширения.

Типы данных: логический

memcpy оптимизация в виде одного из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

Если возможно, генератор кода использует memcpy оптимизация. Оптимизировать код, который копирует последовательные элементы массива, memcpy оптимизация заменяет код на memcpy вызвать. Когда число элементов, чтобы скопировать известно во время компиляции, генератор кода использует MemcpyThreshold свойство определить, использовать ли оптимизацию. См. memcpy Оптимизацию.

false

Генератор кода не использует memcpy оптимизация.

При использовании GPU Coder генератор кода всегда отключает Memcpy оптимизация.

Распараллеливание parfor- циклы в виде одного из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

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

false

Генератор кода обрабатывает parfor- циклы как for- циклы.

Смотрите parfor.

Использование библиотеки OpenMP не совместимо со своевременной (JIT) компиляцией. Если EnableJIT и EnableOpenMP true, генератор кода использует JIT-компиляцию и обрабатывает parfor- циклы как for- циклы.

При использовании GPU Coder генератор кода всегда обрабатывает parfor- циклы как for- циклы.

Поддержка рекурсии во время выполнения в виде одного из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

Рекурсивные функции позволены в сгенерированном коде.

false

Рекурсивные функции не позволены в сгенерированном коде.

Некоторые стандарты кодирования, такие как MISRA, не позволяют рекурсию. Увеличить вероятность генерации кода, который совместим с MISRA C®, установите EnableRuntimeRecursion к false.

Если ваш код MATLAB требует рекурсии во время выполнения и EnableRuntimeRecursion false, сбои генерации кода.

Смотрите генерацию кода для рекурсивных функций.

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

ЗначениеОписание
true

Это значение является значением по умолчанию.

Генератор кода использует подписанные сдвиги влево для умножения степенями двойки. Пример сгенерированного кода C, который использует сдвиг влево со знаком для умножения восемь:

i <<= 3;

false

Генератор кода не использует подписанные сдвиги влево для умножения степенями двойки. Пример сгенерированного кода C, который не использует сдвиг влево со знаком для умножения восемь:

i = i * 8;

GPU Coder всегда устанавливает EnableSignedLeftShifts свойство к истине.

Некоторые стандарты кодирования, такие как MISRA, не позволяют битовые операции на целых числах со знаком. Чтобы увеличить вероятность генерации MISRA C совместимый код, установите EnableSignedLeftShifts к false.

Смотрите управление сдвиги влево со знаком в сгенерированном коде (Embedded Coder).

Право со знаком поразрядно переключает сгенерированный код на нижний регистр в виде одного из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

Генератор кода использует подписанные сдвиги вправо. Пример сгенерированного кода C, который использует сдвиг вправо со знаком:

i >>= 3

false

Генератор кода заменяет сдвиги вправо на целых числах со знаком с вызовом функции в сгенерированном коде. Например:

i = asr_s32(i, 3U);

GPU Coder всегда устанавливает EnableSignedRightShifts свойство к истине.

Некоторые стандарты кодирования, такие как MISRA, не позволяют битовые операции на целых числах со знаком. Чтобы увеличить вероятность генерации MISRA-C:2004 совместимый код, установите EnableSignedRightShifts к false.

Оптимизация сокращения силы в виде одного из значений в этой таблице.

ЗначениеОписание
false

Это значение является значением по умолчанию.

Генератор кода не использует оптимизацию сокращения силы.

true

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

Трассируемость в генерации кода сообщает в виде одного из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

Отчет генерации кода включает в себя трассируемость кода. Смотрите В интерактивном режиме Трассировку Между кодом MATLAB и Сгенерированным Кодом C/C++ (Embedded Coder).

false

Отчет генерации кода не включает в себя трассируемость кода.

Поддержка массивов переменного размера в виде одного из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

Массивы переменного размера позволены для генерации кода.

false

Массивы переменного размера не позволены для генерации кода.

Зависимость:

  • Включает Dynamic memory allocation.

Смотрите генерацию кода для массивов Переменного Размера.

Режим разделения файла, заданный как одно из значений в этой таблице.

ЗначениеОписание
'MapMFileToCFile'

Это значение является значением по умолчанию.

Генератор кода производит отдельные файлы C/C++ для каждого файла языка MATLAB.

'SingleFile'Генератор кода производит один файл для функций C/C++, которые сопоставляют с вашими функциями точки входа MATLAB. Генератор кода производит отдельные файлы C/C++ для служебных функций.

Смотрите как сгенерированный код разделов MATLAB Coder.

Статические метрики кода сообщают в виде одного из значений в этой таблице.

ЗначениеОписание
false

Это значение является значением по умолчанию.

Генератор кода не запускает статический метрический анализ кода во время генерации кода. Можно запустить анализ и представить отчет позже путем нажатия на Code Metrics на вкладке Summary отчета генерации кода.

true

Генератор кода запускает статический метрический анализ кода и представляет отчет во время генерации кода.

Чтобы открыть метрический отчет кода, щелкните по ссылке Code Metrics на вкладке Summary отчета генерации кода.

Зависимость:

  • Генератор кода представляет статический метрический отчет кода, только если GenerateReport является true или если вы задаете -report опция codegen отчет.

Смотрите генерацию статического метрического отчета кода для кода, сгенерированного из кода MATLAB (Embedded Coder).

Генерация только исходного кода в виде одного из значений в этой таблице.

ЗначениеОписание
false

Это значение является значением по умолчанию.

Генератор кода производит исходный код C/C++ и создает объектный код.

true

Генератор кода производит исходный код C/C++, но не вызывает сделать команду или создает объектный код. Когда вы выполняете итерации между изменением кода MATLAB, и генерация кода C/C++, генерируя только код может сэкономить время.

Замена кода сообщает в виде относительно значений в этой таблице.

ЗначениеОписание
false

Это значение является значением по умолчанию.

Генератор кода не представляет заменяющий отчет кода.

true

Генератор кода представляет заменяющий отчет кода, который обобщает замены от выбранной заменяющей библиотеки кода. Отчет обеспечивает отображение между каждым заменяющим экземпляром кода и линией кода MATLAB, который инициировал замену.

Комментарии в сгенерированном коде в виде одного из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

Генератор кода помещает комментарии в сгенерированный код.

falseГенератор кода не помещает комментарии в сгенерированный код.

Случай по умолчанию для всех операторов switch в виде одного из значений в этой таблице.

ЗначениеОписание
false

Это значение является значением по умолчанию.

Генератор кода не может сгенерировать случай по умолчанию для некоторых операторов switch.

trueГенератор кода производит случай по умолчанию для всех операторов switch в сгенерированном коде.

Некоторые стандарты кодирования, такие как MISRA, требуют случая по умолчанию для операторов switch.

Пример C/C++ основная генерация файла в виде одного из значений в этой таблице.

ЗначениеОписание
'GenerateCodeOnly'

Это значение является значением по умолчанию.

Генератор кода генерирует пример C/C++ основная функция, но не компилирует его.

'DoNotGenerate'

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

'GenerateCodeAndCompile'

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

Если GenCodeOnly параметром является true, генератор кода не компилирует C/C++ основная функция.

Основная функция примера является шаблоном, чтобы помочь вам записать C/C++ основную функцию, которая вызывает сгенерированный код C/C++. Смотрите Включают Сгенерированный код Используя Пример Основная Функция.

Генерация make-файла во время процесса сборки в виде одного из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

Генератор кода генерирует make-файл во время процесса сборки.

falseГенератор кода не генерирует make-файл во время процесса сборки. Задайте инструкции для обработки постгенерации кода, включая компиляцию и соединение, в команде постгенерации кода. Смотрите Индивидуальную настройку Процесса сборки.

Генерация файлов поддержки для неличных данных в виде одного из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

Генератор кода производит файлы поддержки для неличных данных (Inf и NaN) только если сгенерированный код использует неличные данные.

false

Генератор кода всегда производит файлы поддержки для неличных данных (Inf и NaN).

Зависимость:

  • Установка SupportNonFinite к true включает этот параметр.

Отчет генерации кода в виде одного из значений в этой таблице.

ЗначениеОписание
false

Это значение является значением по умолчанию.

Генератор кода представляет отчет, только если сообщения об ошибке или предупреждающие сообщения происходят, или если вы устанавливаете LaunchReport к true.

trueГенератор кода представляет отчет генерации кода.

Объект, который задает аппаратную плату. Создать coder.Hardware объект, используйте coder.hardware. Например:

cfg = coder.config('lib');
hw = coder.hardware('Raspberry Pi');
cfg.Hardware = hw;

Прежде чем вы будете использовать coder.hardware, необходимо установить пакет поддержки для аппаратной платы.

Зависимости:

  • Установка Hardware настраивает объект аппаратной реализации и другие параметры конфигурации для конкретной аппаратной платы.

  • Если DeepLearningConfig установлен в coder.ARMNEONConfig объект и Hardware пусто, затем codegen устанавливает GenCodeOnly свойство к true.

Примечание:

  • Предположим, что вы создаете coder.CodeConfig объект cfg в сеансе работы с MATLAB и использовании это в другом сеансе работы с MATLAB. Если хосту - компьютеру MATLAB для второго сеанса не задали аппаратную плату в cfg.Hardware свойство установило на нем, этот параметр возвращается к своему значению по умолчанию. Значением по умолчанию является []. Установка опции Hardware Board к MATLAB Host Computer в приложении эквивалентно использованию cfg.Hardware и cfg.HardwareImplementation.ProdHWDeviceType с их значением по умолчанию.

Чтобы задать аппаратное управление по выполнению PIL, см. Выполнение PIL с ARM Cortex-A в Командной строке (Embedded Coder).

Объект аппаратной реализации, который задает специфичные для оборудования параметры конфигурации для генерации кода C/C++. coder.config создает coder.EmbeddedCodeConfig объект с HardwareImplementation набор свойств к coder.HardwareImplementation объект со значениями параметров по умолчанию для хоста - компьютера MATLAB.

Чтобы предотвратить ошибки компиляции из-за нескольких включение заголовочных файлов, генератор кода производит любой #ifndef или #pragma once построения в сгенерированных заголовочных файлах. Если ваш проект использует отличные файлы, которые используют те же макросы препроцессора, то генерируют код с #pragma once создать. Поведение компиляции #pragma once не стандартизирован.

Задайте HeaderGuardStyle как одно из значений в этой таблице.

ЗначениеОписание
UseIncludeGuard

Генератор кода производит #ifndef разработайте #include защита.

UsePragmaOnceГенератор кода производит #pragma once разработайте #include защита.

Выделение потенциального типа данных выходит в отчете генерации кода в виде одного из значений в этой таблице.

ЗначениеОписание
false

Это значение является значением по умолчанию.

Этот отчет генерации кода не подсвечивает потенциальные проблемы типа данных.

true

Отчет генерации кода подсвечивает код MATLAB, который приводит к операциям с двойной точностью или с одинарной точностью в сгенерированном коде C/C++. Если у вас есть Fixed-Point Designer™, отчет также подсвечивает выражения в коде MATLAB, которые приводят к дорогим операциям фиксированной точки в сгенерированном коде.

Отображение потенциального упорядоченного по строкам КПД размещения выходит в виде одного из значений в этой таблице.

ЗначениеОписание
true

Отчет генерации кода отображает потенциальные проблемы КПД из-за упорядоченного по строкам размещения. (Это значение является значением по умолчанию.)

falseОтчет генерации кода не отображает проблемы, связанные с размещением массивов.

См. проект кода для упорядоченного по строкам размещения массивов.

Инициализируйте функциональную генерацию в виде одного из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

Генератор кода производит инициализировать функцию.

false

Генератор кода не производит инициализировать функцию. Если вы устанавливаете IncludeInitializeFcn к false и инициализировать функция требуется, например, вызвать код поддержки для неличных данных (Inf или NaN), генератор кода производит сообщение об ошибке.

Смотрите шаблоны кода MATLAB, которые требуют, чтобы непустое инициализировало функцию в сгенерированном коде (Embedded Coder).

При использовании GPU Coder генератор кода всегда производит инициализировать функцию.

Оконечная функциональная генерация в виде одного из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

Генератор кода производит оконечную функцию.

false

Генератор кода не производит оконечную функцию. Если вы устанавливаете IncludeTerminateFcn к false и оконечная функция требуется, например, освободить память, генератор кода выдает предупреждение.

При использовании GPU Coder генератор кода всегда производит оконечную функцию.

Количество символов на уровень отступа в виде положительного целого числа в области значений [2,8].

Разработайте для размещения фигурных скобок в сгенерированном коде в виде одного из значений в этой таблице.

ЗначениеОписание
'K&R'

Это значение является значением по умолчанию.

Для блоков в функции вводная фигурная скобка находится на той же линии как ее оператор управления. Например:

void addone(const double x[6], double z[6])
{
  int i0;
  for (i0 = 0; i0 < 6; i0++) {
    z[i0] = x[i0] + 1.0;
  }
}

'Allman'

Для блоков в функции вводная фигурная скобка находится на своей собственной линии на том же уровне отступа как ее оператор управления. Например:

void addone(const double x[6], double z[6])
{
  int i0;
  for (i0 = 0; i0 < 6; i0++)
  {
    z[i0] = x[i0] + 1.0;
  }
}

Присвоение плавания и дважды обнуляет с memsetВ виде одного из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

Если возможно, генератор кода использует memset оптимизация для присвоения нуля с плавающей точкой к последовательным элементам массива. Присваивать последовательные элементы массива, memset оптимизация использует memset вызвать. Когда число элементов, чтобы присвоить известно во время компиляции, генератор кода использует MemcpyThreshold свойство определить, использовать ли оптимизацию. См. memset Оптимизацию.

false

Генератор кода не использует memset оптимизация для присвоения плавания и дважды обнуляет к последовательным элементам массива.

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

ЗначениеОписание
'Speed'

Это значение является значением по умолчанию.

Использует внутреннюю эвристику, чтобы определить, выполнить ли встраивание на сайте вызова. Эта установка обычно приводит к очень оптимизированному коду.

'Always'

Всегда выполняет встраивание на сайте вызова.

'Readability'

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

'Never'

Никогда не встраивает вызовы функции. Результаты в максимальной удобочитаемости. Эта установка может значительно уменьшать эффективность сгенерированного кода.

Даже если вы выбираете 'Always' или 'Never' опция для установки, в определенных случаях, генератор кода не может строго следовать тем инструкциям. Например, если существует конфликт, coder.inline('always') или coder.inline('never') директива, помещенная в теле функции, заменяет эту опцию. Для получения дополнительной информации смотрите Взаимодействие Между Различными Средствами управления Встраиванием.

Смотрите, что управление встраивает, чтобы подстроить эффективность и удобочитаемость сгенерированного кода.

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

ЗначениеОписание
'Speed'

Это значение является значением по умолчанию.

Использует внутреннюю эвристику, чтобы определить, выполнить ли встраивание на сайте вызова. Эта установка обычно приводит к очень оптимизированному коду.

'Always'

Всегда выполняет встраивание на сайте вызова.

'Readability'

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

'Never'

Никогда не встраивает вызовы функции. Результаты в максимальной удобочитаемости. Эта установка может значительно уменьшать эффективность сгенерированного кода.

Даже если вы выбираете 'Always' или 'Never' опция для установки, в определенных случаях, генератор кода не может строго следовать тем инструкциям. Например, если существует конфликт, coder.inline('always') или coder.inline('never') директива, помещенная в теле функции, заменяет эту опцию. Для получения дополнительной информации смотрите Взаимодействие Между Различными Средствами управления Встраиванием.

Смотрите, что управление встраивает, чтобы подстроить эффективность и удобочитаемость сгенерированного кода.

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

ЗначениеОписание
'Speed'

Это значение является значением по умолчанию.

Использует внутреннюю эвристику, чтобы определить, выполнить ли встраивание на сайте вызова. Эта установка обычно приводит к очень оптимизированному коду.

'Always'

Всегда выполняет встраивание на сайте вызова.

'Readability'

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

'Never'

Никогда не встраивает вызовы функции. Результаты в максимальной удобочитаемости. Эта установка может значительно уменьшать эффективность сгенерированного кода.

Даже если вы выбираете 'Always' или 'Never' опция для установки, в определенных случаях, генератор кода не может строго следовать тем инструкциям. Например, если существует конфликт, coder.inline('always') или coder.inline('never') директива, помещенная в теле функции, заменяет эту опцию. Для получения дополнительной информации смотрите Взаимодействие Между Различными Средствами управления Встраиванием.

Смотрите, что управление встраивает, чтобы подстроить эффективность и удобочитаемость сгенерированного кода.

Автоматический открытый из генерации кода сообщают в виде одного из значений в этой таблице.

ЗначениеОписание
false

Это значение является значением по умолчанию.

Если ошибки или предупреждения происходят, или если GenerateReport true, генератор кода представляет отчет, но не открывает отчет.

trueГенератор кода производит и открывает отчет генерации кода.

Циклы с меньшим количеством итераций, чем этот порог являются кандидатами на автоматическое разворачивание генератором кода. Этот порог применяется ко всему for- циклы и parfor- циклы в вашем коде MATLAB. Для отдельного for- цикл, a coder.unroll директива, помещенная сразу перед циклом, более приоритетна по сравнению с оптимизацией развертывания цикла. Порог может также примениться к некоторому for- циклы производятся во время генерации кода.

Смотрите Разворачивают циклы for и циклы parfor.

Текст справки функции MATLAB в функциональном баннере в сгенерированном коде, заданном как одно из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

Генератор кода включает текст справки функции MATLAB в функциональный баннер в сгенерированном коде.

false

Генератор кода обрабатывает текст справки как комментарий пользователя.

Если не выбранный, MATLAB Coder обрабатывает текст справки как комментарий пользователя.

Зависимости:

  • GenerateComments включает этот параметр.

Включение исходного кода MATLAB как комментарии в сгенерированном коде в виде одного из значений в этой таблице.

ЗначениеОписание
false

Это значение является значением по умолчанию.

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

true

Генератор кода вставляет исходный код MATLAB как комментарии в сгенерированном коде. Тег трассируемости сразу предшествует каждой линии исходного кода. Тег трассируемости помогает вам определить местоположение соответствующего исходного кода MATLAB. Смотрите Трассировку Сгенерированный Код C/C++ к Исходному коду MATLAB.

Если у вас есть Embedded Coder в отчете генерации кода, тег трассируемости соединяется с исходным кодом.

Генератор кода также включает подпись функции MATLAB в функциональный баннер.

Зависимость:

  • GenerateComments включает этот параметр.

Смотрите Трассировку Сгенерированный Код C/C++ к Исходному коду MATLAB.

Максимальное количество символов в сгенерированных идентификаторах в виде положительного целого числа в области значений [31, 2048]. Это свойство применяется к сгенерированной функции, введите определение и имена переменных. Чтобы избежать усечения идентификаторов целевым компилятором C/C++, задайте значение, которое совпадает с максимальной длиной идентификатора целевого компилятора C/C++.

Это свойство не применяется к экспортируемым идентификаторам, таким как сгенерированные имена для функций точки входа или emxArray API-функций. Если длина экспортируемого идентификатора превышает максимальную длину идентификатора целевого компилятора C/C++, целевой компилятор C/C++ обрезает экспортируемый идентификатор.

Значения по умолчанию:

  • Если TargetLang установлен в 'C', значение по умолчанию MaxIdLength 31.

  • Если TargetLang установлен в 'C++', значение по умолчанию MaxIdLength 1024.

Минимальный размер, в байтах, для memcpy или memset оптимизации в виде положительного целого числа.

Чтобы оптимизировать сгенерированный код, который копирует последовательные элементы массива, генератор кода пытается заменить код на memcpy вызвать. Чтобы оптимизировать сгенерированный код, который присваивает литеральную константу последовательным элементам массива, генератор кода пытается заменить код на memset вызвать.

Количество байтов является количеством элементов массива, чтобы скопировать или присвоить умноженный на количество байтов, требуемых для типа данных C/C++.

Если число элементов, чтобы скопировать или присвоить является переменным (не известный во время компиляции), генератор кода игнорирует MemcpyThreshold свойство.

См. memcpy Оптимизацию и memset Оптимизацию.

Мультиэкземпляр, повторно используемый код в виде одного из значений в этой таблице.

ЗначениеОписание
false

Это значение является значением по умолчанию.

Генератор кода не производит мультиэкземпляр, повторно используемый код.

true

Генератор кода производит допускающий повторное использование, код мультиэкземпляра, который повторно используем.

См. повторно используемый код.

Эта опция не поддерживается продуктом GPU Coder.

Имя объекта в виде вектора символов.

Максимальное количество потоков ЦП, чтобы идти параллельно for- циклы в сгенерированном коде C/C++ в виде положительного целого числа.

Смотрите задают максимальное количество потоков, чтобы идти параллельно циклы for в сгенерированном коде.

Выведите, чтобы создать из сгенерированного кода C/C++ в виде одного из значений в этой таблице.

ЗначениеОписание
'LIB'Статическая библиотека
'DLL'Динамически подключаемая библиотека
'EXE'Исполняемая программа

Уровень Parenthesization в сгенерированном коде в виде одного из значений в этой таблице.

ЗначениеОписание
'Nominal'

Это значение является значением по умолчанию.

Генератор кода вставляет круглые скобки, чтобы сбалансировать удобочитаемость и визуальную сложность. Например:

Out = ((In2 - In1 > 1.0) && (In2 > 2.0));

'Maximum'

Генератор кода включает круглые скобки, чтобы задать значение, не используя приоритет оператора. Код, сгенерированный с этой установкой, соответствует требованиям MISRA. Например:

 Out = (((In2 - In1) > 1.0) && (In2 > 2.0));

'Minimum'

Генератор кода вставляет круглые скобки при необходимости ANSI® C или C++, или заменять приоритет по умолчанию. Например:

Out = In2 - In1 > 1.0 && In2 > 2.0;

Если вы генерируете код C/C++, который использует минимальный уровень для определенных настроек в некоторых компиляторах, можно получить предупреждения компилятора. Чтобы устранить эти предупреждения, попробуйте номинальный уровень.

Передайте структуры в отношении функций точки входа в виде одного из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

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

Примечание

Функция точки входа, которая пишет в поле параметра структуры, перезаписывает входное значение.

falseСгенерированный код передает структуры значением.

Этот параметр применяется только к функциям точки входа.

Смотрите аргументы структуры передачи ссылкой или значением в сгенерированном коде.

Команда, чтобы настроить сборку, обрабатывающую после генерации MEX-функции с codegenВ виде вектора символов.

Смотрите индивидуальную настройку процесса сборки.

Сохранение extern ключевое слово в объявлениях функции в сгенерированном коде в виде одного из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

Генератор кода включает extern ключевое слово в объявлениях для внешних функций.

false

Генератор кода удаляет extern ключевое слово из объявлений функции.

Генерация кода, который использует N-мерную индексацию в виде одного из значений в этой таблице.

ЗначениеОписание
false

Сгенерируйте код, который использует одномерную индексацию. (Это значение является значением по умолчанию.)

trueСгенерируйте код, который использует N-мерную индексацию.

Смотрите генерируют код, который использует n-мерную индексацию.

Имена переменных, чтобы сохранить в сгенерированном коде в виде одного из значений в этой таблице.

ЗначениеОписание
'None'

Это значение является значением по умолчанию.

Генератор кода не должен сохранять имена переменных. Это может снова использовать любые переменные, которые удовлетворяют требования для переменного повторного использования.

Если ваш код использует большие структуры или массивы, установку PreserveVariableNames к 'None' может уменьшать использование памяти или улучшить скорость выполнения.

'UserNames'

Генератор кода сохраняет имена, которые соответствуют переменным, которые вы задаете в коде MATLAB. Это не заменяет ваше имя переменной на другое имя и не использует ваше имя для другой переменной. Чтобы улучшить удобочитаемость, установите PreserveVariableNames к 'UserNames'. Затем можно более легко проследить переменные в сгенерированном коде назад к переменным в коде MATLAB.

Установка PreserveVariableNames к 'UserNames' не препятствует тому, чтобы оптимизация удалила ваши переменные из сгенерированного кода, или препятствует тому, чтобы компилятор C/C++ снова использовал переменные в сгенерированном двоичном коде.

'All'

Сохраните все имена переменных. Это значение параметров отключает переменное повторное использование. Используйте его только для тестирования или отладки, не для производственного кода.

Смотрите имена переменных заповедника в сгенерированном коде.

Обнаружение кода с плавающей точкой в виде одного из значений в этой таблице.

ЗначениеОписание
false

Это значение является значением по умолчанию.

Генератор кода позволяет данные с плавающей точкой и операции.

true

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

Зависимость:

  • Установка PurelyIntegerCode к true отключает SupportNonFinite параметр. Установка PurelyIntegerCode к false включает SupportNonFinite параметр.

Задайте пользовательские имена для них MATLAB встроенные типы данных: doubleединственныйuint8uint16uint32uint64int8int16int32int64'char', и logical это находится в сгенерированном коде C/C++.

Зависимость:

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

Смотрите, что Генерация Кода доступа Сообщает информацию Программно и coder.ReportInfo Свойства.

Разность потенциалов, сообщающая в виде одного из значений в этой таблице:

ЗначениеОписание
trueГенератор кода сообщает о потенциальных различиях в поведении между сгенерированным кодом и кодом MATLAB. Разности потенциалов перечислены на вкладке отчета генерации кода. Разность потенциалов является различием, которое происходит во время выполнения только при определенных обстоятельствах.
falseГенератор кода не сообщает о разностях потенциалов.

Смотрите, что разности потенциалов сообщают.

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

Несколько зарезервированных имен в виде одного из значений в этой таблице.

ЗначениеОписание
Массивы строк

Массив строк в ReservedNameArray. Например, cfg.ReservedNameArray = ["reserve1","reserve2","reserve3"].

Массив ячеек из символьных векторов

Массив ячеек из символьных векторов в ReservedNameArray. Например, cfg.ReservedNameArray = {'reserve1','reserve2','reserve3'}.

Векторы символов

Разделенный от точки с запятой список зарезервированных имен в ReservedNameArray. Например, cfg.ReservedNameArray = 'reserve1;reserve2;reserve3'.

Примечание

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

Генерация кода, который использует упорядоченное по строкам размещение массивов в виде одного из значений в этой таблице.

ЗначениеОписание
false

Сгенерируйте код, который использует упорядоченное по столбцам размещение массивов. (Это значение является значением по умолчанию.)

trueСгенерируйте код, который использует упорядоченное по строкам размещение массивов.

Смотрите генерируют код, который использует упорядоченное по строкам размещение массивов.

Генерация вызова инициализировать функции в начале сгенерированной точки входа функционирует в виде одного из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

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

false

Сгенерированные функции точки входа не включают вызовы инициализировать функции.

Зависимость:

  • Установка IncludeInitializeFcn и IncludeTerminateFcn к true включает этот параметр.

  • Установка MultiInstanceCode к true отключает этот параметр.

Смотрите, что сгенерированное использование инициализирует и отключает функции.

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

ЗначениеОписание
false

Это значение является значением по умолчанию.

Сгенерированный код не проверяет ошибки в таком как за пределы индексация массива.

true

Сгенерированный код проверяет ошибки в таком как за пределы индексация массива.

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

Сообщения об ошибке находятся на английском языке.

Смотрите Генерируют Автономный Код C/C++, Который Обнаруживает и Сообщает об Ошибках времени выполнения.

Поддержка целочисленного переполнения в виде одного из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

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

false

Генератор кода не производит код, чтобы обработать целочисленное переполнение. Не устанавливайте SaturateOnIntegerOverflow к false если вы не уверены, что ваш код не зависит от поддержки целочисленного переполнения. Если вы отключаете поддержку целочисленного переполнения, и проверка ошибки времени выполнения включена, сгенерированный код производит ошибку для переполнения. Если вы отключаете поддержку целочисленного переполнения, и вы отключаете проверку ошибки времени выполнения, поведение переполнения зависит от вашего целевого компилятора C. В стандарте C поведение для целочисленного переполнения не определено. Однако большинство компиляторов C переносится на переполнении.

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

Смотрите отключают поддержку Integer Overflow или Nonfinites.

Отладка на уровне исходного кода сгенерированного кода во время программного обеспечения в цикле (SIL) выполнение в виде одного из значений в этой таблице.

ЗначениеОписание
false

Это значение является значением по умолчанию.

Отключает отладку сгенерированного кода во время выполнения SIL.

true

Позволяет отладчику наблюдать поведение кода во время программного обеспечения в цикле (SIL) выполнение.

Поддерживаемые отладчики:

  • На Windows®, Microsoft® Visual C++® отладчик.

  • На Linux®, GNU® Отладчик отображения данных (DDD).

Смотрите сгенерированный код отладки во время выполнения SIL (Embedded Coder).

Постоянный входной режим проверки для SIL или выполнения PIL в виде одного из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

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

false

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

Возможно ускорить SIL или выполнение PIL установкой SILPILCheckConstantInputs к false.

Смотрите Ускоряют Выполнение SIL/PIL путем Отключения Постоянной Входной Синхронизации Проверки и Глобальных данных (Embedded Coder)

Режим синхронизации глобальных данных для SIL или выполнения PIL в виде одного из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

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

false

SIL или выполнение PIL не синхронизируют значения глобальных переменных в SIL или среде выполнения PIL со значениями в рабочем пространстве MATLAB. Если значения не синхронизируются, результаты в MATLAB могут отличаться от результатов в SIL или выполнении PIL.

Возможно ускорить SIL или выполнение PIL установкой SILPILSyncGlobalData к false.

Смотрите Ускоряют Выполнение SIL/PIL путем Отключения Постоянной Входной Синхронизации Проверки и Глобальных данных (Embedded Coder)

Отображение коммуникационной информации о вводе-выводе во время программного обеспечения в цикле (SIL) или процессор в цикле (PIL) выполнение в виде одного из значений в этой таблице.

ЗначениеОписание
'off'

Это значение является значением по умолчанию.

Генератор кода не отображает коммуникационную информацию о вводе-выводе во время SIL или выполнения PIL.

'on'

Генератор кода отображает коммуникационную информацию о вводе-выводе во время SIL или выполнения PIL.

Смотрите коммуникацию цели хоста Поиска и устранения проблем (Embedded Coder).

Максимальное использование стека на приложение, в байтах в виде положительного целого числа. Установите предел, который ниже, чем доступный размер стека. В противном случае переполнение стека этапа выполнения может произойти. Компилятор C обнаруживает и сообщает о переполнениях стека.

Смотрите отключают поддержку Integer Overflow или Nonfinites.

Поддержка неличных значений в виде одного из значений в этой таблице.

ЗначениеОписание
true

Это значение является значением по умолчанию.

Если GenerateNonFiniteFilesIfUsed установлен в true, генератор кода производит код, чтобы поддержать неличные значения (Inf и NaN) только если они используются.

Если GenerateNonFiniteFilesIfUsed установлен в false, генератор кода всегда производит код, чтобы поддержать неличные значения (Inf и NaN).

false

Генератор кода не производит код, чтобы поддержать неличные значения.

Смотрите отключают поддержку Integer Overflow или Nonfinites.

Язык, чтобы использовать в сгенерированном коде в виде 'C' или 'C++'. Если вы задаете C++, генератор кода переносит код С в .cpp файлы так, чтобы можно было использовать компилятор C++ и интерфейс с внешними приложениями C++. Это не генерирует классы C++.

При использовании GPU Coder генератор кода устанавливает TargetLang к C++.

Зависимость: если DeepLearningConfig установлен, codegen наборы TargetLang к C++.

'Auto' опция использует TargetLang установка, чтобы выбрать, который стандарт языка использовать для сгенерированного кода. Стандарт языка по умолчанию зависит от языка, который вы выбираете. Для C библиотекой по умолчанию является 'C99 (ISO)'. Для C++ библиотекой по умолчанию является 'C++11 (ISO)'.

Стандарты языка, чтобы использовать для сгенерированного кода в виде одного из этих векторов символов:

  • 'C89/C90 (ANSI)'

  • 'C99 (ISO)'

  • 'C++03 (ISO)'

  • 'C++11 (ISO)'

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

Смотрите изменяют стандарт языка.

Набор инструментальных средств, чтобы использовать для создания C/C++ библиотечную или исполняемую программу в виде вектора символов. Список доступных наборов инструментальных средств зависит от платформы хоста - компьютера и может включать пользовательские наборы инструментальных средств, которые вы добавили. Если вы не задаете набор инструментальных средств, генератор кода определяет местоположение установленного набора инструментальных средств.

Примечание:

  • Предположим, что вы создаете coder.CodeConfig объект cfg в сеансе работы с MATLAB и использовании это в другом сеансе работы с MATLAB. Если хосту - компьютеру MATLAB для второго сеанса не задали набор инструментальных средств в cfg.Toolchain свойство установило на нем, этот параметр возвращается к своему значению по умолчанию. Значением по умолчанию является 'Automatically locate an installed toolchain'.

Прогресс генерации кода отображается в виде одного из значений в этой таблице.

ЗначениеОписание
false

Это значение является значением по умолчанию.

Генератор кода не отображает прогресс генерации кода.

true

Генератор кода отображает прогресс генерации кода, включая этапы генерации кода и выход компилятора.

Отобразиться ли, состояние генерации кода прогрессируют в командной строке MATLAB в виде одного из значений в этой таблице.

ЗначениеОписание
'Silent'

Если генерация кода успешно выполняется без предупреждения, все сообщения подавлены, включая то, когда вы генерируете отчет.

Предупреждающие сообщения и сообщения об ошибке отображены.

'Info'

Это значение является значением по умолчанию.

По сравнению с 'Silent' режим, если генерация кода успешно выполняется, эти дополнительные сообщения, отображен:

  • Code generation successful

  • Соединитесь со сгенерированным отчетом, если любой

'Verbose'

В дополнение к сообщениям, показанным в 'Info' режим, состояние генерации кода и целевые логарифмические сообщения сборки отображены.

Режим верификации кода в виде одного из значений в этой таблице.

ЗначениеОписание
'None'Нормальное выполнение
'SIL'Программное обеспечение в цикле (SIL) выполнение
'PIL'Процессор в цикле (PIL) выполнение

См. программное обеспечение Code Verification Through в цикле и процессор в выполнении цикла (Embedded Coder).

Примеры

свернуть все

Запишите функцию MATLAB, от которой можно сгенерировать код. Этот пример использует функцию myadd это возвращает сумму его входных параметров.

function c = myadd(a,b)
c = a + b;
end

Создайте объект настройки для генерации автономного кода C/C++ (статическая библиотека, динамически подключаемая библиотека или исполняемая программа). Например, создайте объект настройки для генерации статической библиотеки.

cfg = coder.config('lib');

Если Embedded Coder установлен, coder.config создает coder.EmbeddedCodeConfig объект.

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

cfg.CommentStyle = 'Single-line';

CommentStyle свойство доступно только в объекте настройки Embedded Coder.

Сгенерируйте код при помощи codegen. Передайте объект настройки codegen при помощи -config опция. Укажите, что входные параметры являются скаляром дважды.

codegen myadd -config cfg -args {1 1} -report

Альтернативная функциональность

Использовать параметры конфигурации по умолчанию для сборки вводит 'LIB', 'DLL', или 'EXE', используйте codegen опция -config:lib, -config:dll, или -config:exe, соответственно. Затем вы не должны создать и передать объект настройки codegen.

Вопросы совместимости

развернуть все

Изменение поведения в будущем релизе

Изменение поведения в будущем релизе

Введенный в R2011a