主要内容

c++代码生成

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

生成c++代码

要生成c++代码,请遵循与生成C代码相同的整体工作流步骤。例如,请参见在命令行生成C代码.从命令行选择c++语言选项,或使用代码生成配置设置,或从MATLAB编码器应用程序。

假设您想为一个函数生成c++代码喷火它接受零输入:

  • 从命令行使用朗:c++说明符。此说明符提供了一种快速而简单的方法来生成c++代码。例如,生成一个c++静态库和c++源代码喷火,输入:

    codegen配置:自由朗:c++喷火
  • 在配置对象中,设置TargetLang参数到c++。例如,要生成一个c++动态库,输入:

    CFG = code .config(“dll”);cfg。TargetLang =“c++”;codegen配置cfg喷火
  • 从应用程序,在生成代码步骤,选择c++语言按钮。

生成代码中支持的c++语言特性金宝app

要了解利用关键c++语言特性的代码生成,请参考以下帮助主题:

目标 更多的信息

为MATLAB代码中的类生成c++类。

生成MATLAB类的c++类

在c++类中生成入口点函数作为方法。

生成带有类接口的c++代码

为MATLAB包生成c++命名空间。将所有生成的代码放在指定的名称空间中。放置为MathWorks生成的所有代码®您指定的名称空间中的代码。

将生成的c++代码组织到命名空间中

在自定义c++代码和生成的代码之间动态传递分配的数组。生成的c++代码通过使用编码器:数组类模板。生成的代码提供了一个简单的API,您可以使用它与这个模板进行交互。

在生成的函数接口中使用动态分配的c++数组

下面的例子说明了这些功能的使用:

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

如果您为同一个MATLAB函数分别生成C和c++代码,并检查生成的源代码,则存在实现差异。以下是一些显著的区别:

  • 生成的c++代码包含重载函数或方法,它们具有相同的名称,但支持多个签名。金宝appC语言不支持函数重载。金宝app

  • 生成的c++代码在不同的命名空间层次结构中重用相同的标识符名称。例如,相同的类型名myType是否可以与顶级名称空间一起出现在两个不同的名称空间层次结构中myNamespace_1而且myNamespace_2.C语言不支持名称空间和这种标识符名称的重用。金宝app

  • 在生成的C代码中,函数头包含# ifdef __cplusplus属性指定的警卫外来的“C”生成的C函数的标识符。作为c++项目的一部分,编译器和链接器在构建C代码时使用这些标识符。

  • 生成c++代码使用. cppc++文件的扩展名和.h头文件的扩展。生成的C代码使用.c而且.h扩展。

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

  • 所生成的代码定义的值而且基于c++和C的不同机制。

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

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

另请参阅

相关的话题