Генерация кода С++

MATLAB® Coder™ включает, вы любому генерируете код C or C++. Генератор кода производит код С по умолчанию. Сгенерированный Код С++ может использовать функциональность, не доступную на языке C, который может сделать Код С++ более читаемым и легче использовать.

Сгенерируйте код С++

Чтобы сгенерировать Код С++, выполните те же полные шаги рабочего процесса, которые вы используете, чтобы сгенерировать код С. Например, смотрите, Генерируют код С в Командной строке. Выберите опцию языка C++ из командной строки, или с параметром конфигурации генерации кода, или из приложения MATLAB Coder.

Предположим, что вы хотите сгенерировать Код С++ для функционального foo это принимает нулевые входные параметры:

  • Из командной строки используйте -lang:c++ спецификатор. Этот спецификатор обеспечивает быстрый и простой способ сгенерировать Код С++. Например, чтобы сгенерировать C++ статическая библиотека и исходный код C++ для foo, Введите:

    codegen -config:lib -lang:c++ foo
    
  • В объекте настройки, набор TargetLang параметр на C++. Например, чтобы сгенерировать C++ динамическая библиотека, введите:

    cfg = coder.config('dll');
    cfg.TargetLang = 'C++'; 
    codegen -config cfg foo 
    
  • Из приложения, на шаге Generate Code, нажимают кнопку языка C++.

Функции языка C++, поддерживавшие в сгенерированном коде

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

Пространства имен

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

Задайте пространство имен при помощи CppNamespace опция объекта настройки. Например, чтобы сгенерировать Код С++ в пространстве имен под названием generated, Введите:

cfg = coder.config('dll');
cfg.TargetLang = 'C++';
cfg.CppNamespace = 'generated'; 
codegen -config cfg foo 

Чтобы задать пространство имен из приложения, на шаге Generate Code, выбирают More Settings > All Settings, и затем изменяют поле C++ Namespace. Для примера, который использует пространства имен, смотрите, Интегрируют Несколько Сгенерированных Проектов Кода С++.

Интерфейс класса

Чтобы достигнуть более объектно-ориентированного кода, можно сгенерировать Код С++ с интерфейсом класса. Функция точки входа или функции производятся как методы в классе C++. Задайте интерфейс класса при помощи CppInterfaceStyle свойство. Определяйте имя сгенерированного класса с CppInterfaceClassName. Например:

cfg = coder.config('lib');
cfg.GenCodeOnly = true;
cfg.TargetLang = 'C++';
cfg.CppInterfaceStyle = 'Methods';
cfg.CppInterfaceClassName = 'myClass';
codegen foog -config cfg -report -d withClass

Для получения дополнительной информации смотрите, Генерируют Код С++ с Интерфейсом Класса.

Генератор кода не поддерживает генерацию класса C++ непосредственно от класса MATLAB.

Различия в сгенерированном коде C и коде С++

Если вы отдельно генерируете C и Код С++ для той же функции MATLAB, и смотрите сгенерированный исходный код, то существуют различия в реализации. Это некоторые заметные различия:

  • В сгенерированном коде C функциональные заголовки содержат #ifdef __cplusplus включайте защиту, которая задает extern "C" идентификатор для сгенерированных функций C. Компилятор и компоновщик используют эти идентификаторы в создании кода С как часть проекта C++.

  • Сгенерированный Код С++ использует .cpp расширения файла для файлов C++ и .h расширения для заголовочных файлов. Сгенерированный код C использует .c и .h расширения.

  • Сгенерированный Код С++ использует некоторые броски C++, как static_cast, которые являются более явными, чем синтаксис кастинга в C.

  • Сгенерированный код задает значения для Inf и NaN на основе различных механизмов для C++ и C.

  • Сгенерированный Код С++ использует пользовательские типы данных как описано в Отображении Типов MATLAB к Типам в Сгенерированном коде.

  • Сгенерированный Код С++ пользуется различными библиотеками, чем сгенерированный код C. Например, стандартная математическая библиотека по умолчанию для C++ и C описана в Изменении Стандартная Математическая Библиотека.

Смотрите также

Похожие темы