C++ 代码生成
MATLAB® Coder™ 使您能够生成 C 或 C++ 代码。默认情况下,代码生成器生成 C 代码。生成的 C++ 代码可以使用 C 语言中没有的功能,这些功能可以使 C++ 代码更加易读和易于使用。
生成 C++ 代码
要生成 C++ 代码,请遵循代码生成工作流。请参阅使用 MATLAB Coder 进行代码生成的概述。
要指示代码生成器生成 C++ 代码,请使用以下方法之一:
生成的代码中支持的 C++ 语言功能
要了解利用重要的 C++ 语言功能的代码生成,请参考以下帮助主题:
| 目的 | 更多信息 |
为您的 MATLAB 代码中的类生成 C++ 类。 | |
将入口函数生成为 C++ 类中的方法。 | |
为 MATLAB 命名空间生成 C++ 命名空间。将所有生成的代码放在指定的 C++ 命名空间中。 | |
在自定义 C++ 代码和生成的代码之间传递动态分配的数组。生成的 C++ 代码通过使用 | Use Dynamically Allocated C++ Arrays in Generated Function Interfaces |
这些示例说明这些功能的使用:
生成的 C 代码和 C++ 代码之间的其他区别
如果为同一个 MATLAB 函数分别生成 C 和 C++ 代码,并检查生成的源代码,可以发现在实现上的差异。这些是一些显著的差异:
生成的 C++ 代码可包含具有多个签名的同名重载函数或方法。C 语言不支持函数重载。
生成的 C++ 代码可跨不同命名空间层次结构重用相同的标识符名称。例如,相同的类型名称
myType可以出现在两个不同命名空间层次结构中,顶层命名空间为myNamespace_1和myNamespace_2。C 语言不支持命名空间和这种标识符名称重用。在生成的 C 代码中,函数头包含为生成的 C 函数指定
extern "C"标识符的#ifdef __cplusplusinclude 防卫式声明。编译器和链接器在构建作为 C++ 工程一部分的 C 代码时使用这些标识符。生成的 C++ 代码的 C++ 文件使用
.cpp文件扩展名,头文件使用.h文件扩展名。生成的 C 代码使用.c和.h扩展。生成的 C++ 代码使用一些 C++ 强制转换,例如
static_cast,比 C 语言中的强制转换语法更加显式。生成的代码基于 C++ 和 C 的不同机制为
Inf和NaN定义值。生成的 C++ 代码使用将 MATLAB 类型映射到生成的代码中的类型中所述的自定义数据类型。
生成的 C++ 代码使用与生成的 C 代码不同的库。例如,更改用于代码生成的语言标准中描述了 C++ 和 C 的默认语言标准。