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

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++, обратитесь к следующим разделам справки:

ЦельДополнительная информация

Сгенерируйте классы C++ для классов в коде MATLAB.

Сгенерируйте классы C++ для классов MATLAB

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

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

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

Организуйте сгенерированный код С++ в пространства имен

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

Используйте динамически выделенные массивы C++ в сгенерированных интерфейсах функции

Эти примеры иллюстрируют использование этих функциональных возможностей:

Дополнительные различия между сгенерированным кодом 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.

См. также

Похожие темы