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++.
Путем генерации кода с пространством имен можно более легко интегрировать код с другим исходным кодом, который может иметь идентичные имена функций или имена типов данных. Когда вы используете пространство имен, пакеты генератора кода все сгенерированные функции и вводите определения в пространство имен, за исключением типовых определений типа, содержавшихся в 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 и Код С++ для той же функции 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 описана в Изменении Стандартная Математическая Библиотека.