c 代码生成 -凯发k8网页登录

main content

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 类。

generate c classes for matlab classes

将入口函数生成为 c 类中的方法。

generate c code with a class interface

为 matlab 包生成 c 命名空间。将所有生成的代码放在指定的命名空间中。将为 mathworks® 代码生成的所有代码放在您指定的命名空间中。

在自定义 c 代码和生成的代码之间传递动态分配的数组。生成的 c 代码通过使用 coder::array 类模板来实现这样的数组。生成的代码提供简单的 api,您可以使用它与该模板进行交互。

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

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

如果为同一个 matlab 函数分别生成 c 和 c 代码,并检查生成的源代码,可以发现在实现上的差异。这些是一些显著的差异:

  • 生成的 c 代码可包含具有多个签名的同名重载函数或方法。c 语言不支持函数重载。

  • 生成的 c 代码可跨不同命名空间层次结构重用相同的标识符名称。例如,相同的类型名称 mytype 可以出现在两个不同命名空间层次结构中,顶层命名空间为 mynamespace_1mynamespace_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 的不同机制为 infnan 定义值。

  • 生成的 c 代码使用中所述的自定义数据类型。

  • 生成的 c 代码使用与生成的 c 代码不同的库。例如,中描述了 c 和 c 的默认语言标准。

另请参阅

相关主题

    网站地图