MATLAB ® Coder™ позволяет создавать код C или C++. Генератор кода создает код C по умолчанию. Созданный код C++ может использовать функции, недоступные на языке C, что делает код C++ более читаемым и простым в использовании.
Чтобы создать код C++, выполните те же общие шаги рабочего процесса, которые используются для создания кода C. Например, см. раздел Создание кода C в командной строке. Выберите параметр языка C++ в командной строке, с настройкой конфигурации генерации кода или в приложении MATLAB Coder.
Предположим, что требуется создать код C++ для функции foo который принимает нулевые входные данные:
В командной строке используйте команду -lang:c++ спецификатор. Этот спецификатор обеспечивает быстрый и простой способ создания кода C++. Например, чтобы создать статическую библиотеку C++ и исходный код C++ для foo, введите:
codegen -config:lib -lang:c++ foo
В объекте конфигурации установите TargetLang параметр C++. Например, чтобы создать динамическую библиотеку C++, введите:
cfg = coder.config('dll'); cfg.TargetLang = 'C++'; codegen -config cfg foo
В приложении на шаге Создать код нажмите кнопку языка C++.
Сведения о создании кода с использованием ключевых функций языка C++ см. в следующих разделах справки:
| Цель | Дополнительные сведения |
Создайте классы C++ для классов в коде MATLAB. | |
Создание функций точек входа в качестве методов в классе C++. | |
Создание пространств имен C++ для пакетов MATLAB. Поместите весь созданный код в указанное пространство имен. Поместите весь код, созданный для кода MathWorks ®, в указанное пространство имен. | |
Передача динамически выделенных массивов между пользовательским кодом C++ и сгенерированным кодом. Сгенерированный код C++ реализует такие массивы с помощью | Использование динамически распределенных массивов C++ в генерируемых функциональных интерфейсах |
Эти примеры иллюстрируют использование этих функциональных возможностей:
Если отдельно создать код C и C++ для одной и той же функции MATLAB и проверить созданный исходный код, то существуют различия в реализации. Это некоторые заметные различия:
Созданный код C++ содержит перегруженные функции или методы, которые имеют одно и то же имя, но поддерживают несколько сигнатур. Язык C не поддерживает перегрузку функций.
Созданный код C++ повторно использует одно и то же имя идентификатора в различных иерархиях пространства имен. Например, имя того же типа myType может отображаться в двух различных иерархиях пространств имен с пространствами имен верхнего уровня myNamespace_1 и myNamespace_2. Язык C не поддерживает пространства имен и такое повторное использование имен идентификаторов.
В сгенерированном коде C заголовки функций содержат #ifdef __cplusplus включить защитные устройства, которые определяют extern "C" идентификатор сгенерированных функций C. Компилятор и компоновщик используют эти идентификаторы при построении кода C как части проекта C++.
Использование сгенерированного кода C++ .cpp расширения файлов C++ и .h расширения для заголовочных файлов. Использование сгенерированного кода C .c и .h расширения.
Сгенерированный код C++ использует некоторые слепки C++, например static_cast, которые являются более явными, чем синтаксис кастинга в C.
Созданный код определяет значения для Inf и NaN на основе различных механизмов для C++ и C.
Сгенерированный код C++ использует пользовательские типы данных, как описано в разделе Сопоставление типов MATLAB типам в сгенерированном коде.
Сгенерированный код C++ использует библиотеки, отличные от сгенерированного кода C. Например, стандартная математическая библиотека по умолчанию для C++ и C описана в разделе Изменение стандартной математической библиотеки.