马铃薯®编码器™使您可以生成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 ++语言功能的代码生成,请参阅这些帮助主题:
进球 | 更多信息 |
在MATLAB代码中为类生成C ++类。 |
|
生成切入点函数作为C ++类中的方法。 |
|
为MATLAB包生成C ++命名空间。将所有生成的代码放在指定的命名空间中。放置为MathWorks生成的所有代码®您指定的命名空间中的代码。 |
|
通过自定义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的默认标准数学库将描述更改标准数学库。