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++ language.
Чтобы узнать о генерации кода, которая использует ключевые функции языка C++, обратитесь к следующим разделам справки:
Цель | Дополнительная информация |
Сгенерируйте классы C++ для классов в коде MATLAB. | |
Сгенерируйте функции точки входа как методы в классе C++. | |
Сгенерируйте пространства имен C++ для пакетов MATLAB. Поместите весь сгенерированный код в заданное вами пространство имен. Поместите весь код, сгенерированный для MathWorks® код в заданном пространстве имен. | |
Передайте динамически выделенные массивы между вашим пользовательским кодом С++ и сгенерированным кодом. Сгенерированный код С++ реализует такие массивы с помощью | Используйте динамически выделенные массивы C++ в сгенерированных интерфейсах функции |
Эти примеры иллюстрируют использование этих функциональных возможностей:
Если вы отдельно генерируете C и Код С++ для той же функции MATLAB, и просматриваете сгенерированный исходный код, то существуют различия в реализации. Это некоторые заметные различия:
Сгенерированный код С++ содержит перегруженные функции или методы, которые имеют то же имя, но поддерживают несколько сигнатур. Язык C не поддерживает перегрузку функций.
Сгенерированный код С++ повторно использует одно и то же имя идентификатора в различных иерархиях пространства имен. Для примера то же имя myType
может находиться в двух различных иерархиях пространств имен с пространствами имен верхнего уровня myNamespace_1
и myNamespace_2
. Язык C не поддерживает пространства имен и такое повторное использование имен идентификаторов.
В сгенерированном коде C заголовки функций содержат #ifdef __cplusplus
включить охрану, которая задает extern "C"
идентификатор сгенерированных функций C. Компилятор и линкер используют эти идентификаторы в создании кода С как части проекта C++.
Сгенерированный код С++ использует .cpp
расширения файлов для файлов C++ и .h
расширения для заголовочных файлов. Сгенерированный код C использует .c
и .h
расширения.
Сгенерированный код С++ использует некоторые приведения C++, например static_cast
, которые являются более явными, чем синтаксис литья в С.
Сгенерированный код определяет значения для Inf
и NaN
на основе различных механизмов для C++ и C.
Сгенерированный код С++ использует пользовательские типы данных, как описано в Отображение типов MATLAB с типами в сгенерированном коде.
Сгенерированный код С++ использует другие библиотеки, чем сгенерированный код C. Например, стандартная математическая библиотека по умолчанию для C++ и C описана в Change the Standard Math Library.