c 代码生成
matlab® coder™ 使您能够生成 c 或 c 代码。默认情况下,代码生成器生成 c 代码。生成的 c 代码可以使用 c 语言中没有的功能,这些功能可以使 c 代码更加易读和易于使用。
生成 c 代码
要生成 c 代码,请遵循与生成 c 代码相同的整体工作流步骤。例如,请参阅。从命令行中或使用代码生成配置设置或者从 matlab coder 中选择 c 语言选项。
假设您要为接受零输入的函数 foo
生成 c 代码:
从命令行中,使用
-lang:c
设定符。此设定符提供一种快速简单的生成 c 代码的方法。例如,要为foo
生成 c 静态库和 c 源代码,请输入:codegen -config:lib -lang:c foo
在配置对象中,将
targetlang
参数设置为 c 。例如,要生成 c 动态库,请输入:cfg = coder.config('dll'); cfg.targetlang = 'c '; codegen -config cfg foo
在 app 的生成代码步骤中,选择 c 语言按钮。
生成的代码中支持的 c 语言功能
要了解利用重要的 c 语言功能的代码生成,请参考以下帮助主题:
目标 | 更多信息 |
为您的 matlab 代码中的类生成 c 类。 | |
将入口函数生成为 c 类中的方法。 | |
为 matlab 包生成 c 命名空间。将所有生成的代码放在指定的命名空间中。将为 mathworks® 代码生成的所有代码放在您指定的命名空间中。 | |
在自定义 c 代码和生成的代码之间传递动态分配的数组。生成的 c 代码通过使用 |
这些示例说明这些功能的使用:
生成的 c 代码和 c 代码之间的其他区别
如果为同一个 matlab 函数分别生成 c 和 c 代码,并检查生成的源代码,可以发现在实现上的差异。这些是一些显著的差异:
生成的 c 代码可包含具有多个签名的同名重载函数或方法。c 语言不支持函数重载。
生成的 c 代码可跨不同命名空间层次结构重用相同的标识符名称。例如,相同的类型名称
mytype
可以出现在两个不同命名空间层次结构中,顶层命名空间为mynamespace_1
和mynamespace_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 的不同机制为
inf
和nan
定义值。生成的 c 代码使用中所述的自定义数据类型。
生成的 c 代码使用与生成的 c 代码不同的库。例如,中描述了 c 和 c 的默认语言标准。