主要内容

C ++代码生成

马铃薯®编码器™使您可以生成C或C ++代码。代码生成器默认情况下会产生C代码。生成的C ++代码可以使用C语言中不可用的功能,这些功能可以使C ++代码更可读,更易于使用。

生成C ++代码

要生成C ++代码,请按照您使用的相同的整个工作流步骤来生成C代码。例如,看在命令行生成C代码。从命令行中选择C ++语言选项,或使用代码生成配置设置,或者从Matlab编码器应用程序。

假设您要为函数生成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 ++语言功能万博1manbetx

要了解使用密钥C ++语言功能的代码生成,请参阅这些帮助主题:

进球 更多信息

在MATLAB代码中为类生成C ++类。

为Matlab类生成C ++类

生成切入点函数作为C ++类中的方法。

使用类接口生成C ++代码

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

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

通过自定义C ++代码和生成的代码之间的动态分配数组。生成的C ++代码通过使用此类数组来实现编码器:: Array.类模板。生成的代码提供了一个简单的API,您可以用来与此模板进行交互。

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

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

生成的C代码和C ++代码之间的附加差异

如果您单独生成相同MATLAB函数的C和C ++代码,并检查生成的源代码,则存在实现差异。这些是一些显着的差异:

  • 生成的C ++代码包含具有相同名称的过载函数或方法,但支持多个签名。万博1manbetxC语言不支持过载功能。万博1manbetx

  • 生成的C ++代码在不同的命名空间层次结构上重用相同的标识符名称。例如,相同类型的名称mytype.可以出现在具有顶级命名空间的两个不同的名称空间层次结构中mynamespace_1.mynamespace_2.。C语言不支持命名空间和此类重用标识符名称。万博1manbetx

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

  • 生成的C ++代码使用.cpp.C ++文件的文件扩展标题文件的扩展。生成的C代码使用.c扩展。

  • 生成的C ++代码使用一些C ++演员,如static_cast.,比C中的铸造语法更明确。

  • 生成的代码定义了值INF.基于C ++和C的不同机制。

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

  • 生成的C ++代码使用不同的库而不是生成的C代码。例如,C ++和C的默认标准数学库将描述更改标准数学库

另请参阅

相关主题