主要内容

C++ 代码生成

MATLAB® Coder™ 使您能够生成 C 或 C++ 代码。默认情况下,代码生成器生成 C 代码。生成的 C++ 代码可以使用 C 语言中没有的功能,这些功能可以使 C++ 代码更加易读和易于使用。

生成 C++ 代码

要生成 C++ 代码,请遵循代码生成工作流。请参阅使用 MATLAB Coder 进行代码生成的概述

要指示代码生成器生成 C++ 代码,请使用以下方法之一:

  • 在命令行中将 -lang:c++ 选项与 codegen 命令一起使用。

  • 在代码配置对象中将 TargetLang 属性设置为 "C++"

  • 在代码生成设置中,将语言参数设置为 C++

  • MATLAB Coder 中,点击 MATLAB Coder 工具条中的语言按钮,然后选择 C++

生成的代码中支持的 C++ 语言功能

要了解利用重要的 C++ 语言功能的代码生成,请参考以下帮助主题:

目的更多信息

为您的 MATLAB 代码中的类生成 C++ 类。

Generate C++ Classes for MATLAB Classes

将入口函数生成为 C++ 类中的方法。

Generate C++ Code with a Class Interface

为 MATLAB 命名空间生成 C++ 命名空间。将所有生成的代码放在指定的 C++ 命名空间中。

Organize Generated C++ Code into Namespaces

在自定义 C++ 代码和生成的代码之间传递动态分配的数组。生成的 C++ 代码通过使用 coder::array 类模板来实现这样的数组。生成的代码提供简单的 API,您可以使用它与该模板进行交互。

Use Dynamically Allocated C++ Arrays in Generated Function Interfaces

这些示例说明这些功能的使用:

生成的 C 代码和 C++ 代码之间的其他区别

如果为同一个 MATLAB 函数分别生成 C 和 C++ 代码,并检查生成的源代码,可以发现在实现上的差异。这些是一些显著的差异:

  • 生成的 C++ 代码可包含具有多个签名的同名重载函数或方法。C 语言不支持函数重载。

  • 生成的 C++ 代码可跨不同命名空间层次结构重用相同的标识符名称。例如,相同的类型名称 myType 可以出现在两个不同命名空间层次结构中,顶层命名空间为 myNamespace_1myNamespace_2。C 语言不支持命名空间和这种标识符名称重用。

  • 在生成的 C 代码中,函数头包含为生成的 C 函数指定 extern "C" 标识符的 #ifdef __cplusplus include 防卫式声明。编译器和链接器在构建作为 C++ 工程一部分的 C 代码时使用这些标识符。

  • 生成的 C++ 代码的 C++ 文件使用 .cpp 文件扩展名,头文件使用 .h 文件扩展名。生成的 C 代码使用 .c.h 扩展。

  • 生成的 C++ 代码使用一些 C++ 强制转换,例如 static_cast,比 C 语言中的强制转换语法更加显式。

  • 生成的代码基于 C++ 和 C 的不同机制为 InfNaN 定义值。

  • 生成的 C++ 代码使用将 MATLAB 类型映射到生成的代码中的类型中所述的自定义数据类型。

  • 生成的 C++ 代码使用与生成的 C 代码不同的库。例如,更改用于代码生成的语言标准中描述了 C++ 和 C 的默认语言标准。

另请参阅

主题