exponenta event banner

Создание кода C++

MATLAB ® Coder™ позволяет создавать код C или 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++ см. в следующих разделах справки:

ЦельДополнительные сведения

Создайте классы C++ для классов в коде MATLAB.

Создание классов C++ для классов MATLAB

Создание функций точек входа в качестве методов в классе C++.

Создание кода C++ с интерфейсом класса

Создание пространств имен C++ для пакетов MATLAB. Поместите весь созданный код в указанное пространство имен. Поместите весь код, созданный для кода MathWorks ®, в указанное пространство имен.

Упорядочить сгенерированный код C++ в пространства имен

Передача динамически выделенных массивов между пользовательским кодом C++ и сгенерированным кодом. Сгенерированный код C++ реализует такие массивы с помощью coder::array шаблон класса. Созданный код предоставляет простой API, который можно использовать для взаимодействия с этим шаблоном.

Использование динамически распределенных массивов 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 описана в разделе Изменение стандартной математической библиотеки.

См. также

Связанные темы