主要内容

选择和配置C或c++编译器

构建过程需要一个编译器的支持。金宝app编译器,在这种情况下,是指一个开发环境包含一个链接,使效用,和一个高级语言的编译器。支持的编译器版本的详细信息,请金宝app参见:

当创建一个可执行程序,构建过程必须能够访问一个受支持的编译器。金宝app构建过程可以找到一个编译器使用基于默认的墨西哥人编译器。

工具链的构建过程也需要选择或模板makefile。编译器运行的工具链或模板makefile决定,在制造阶段的构建。有关更多信息,请参见配置工具链(ToolchainInfo)或模板Makefile构建过程

确定哪些模板makefile可供你的编译器和系统目标文件,看看不同产品的比较系统目标文件支持下载188bet金宝搏金宝app

生成的文件和用户提供的文件,文件扩展名,. c. cpp,决定了构建过程是否使用C或c++编译器。如果文件扩展名. c,构建过程使用C编译器来编译文件,和符号使用C链接约定。如果文件扩展名. cpp,构建过程使用c++编译器来编译文件,和符号使用c++链接规范。

语言标准的兼容性

代码生成器生成的代码符合以下标准:

语言 金宝app支持标准 其他的名字
C

ISO®/ IEC 9899:1990

C89 /人私下偷偷收藏盒式

ISO / IEC 9899:1999

C99

c++

ISO / IEC 14882:2003

c++ 03

ISO / IEC 14882:2011

c++ 11

这些来源的代码,代码生成器产生ANSI®C / c++兼容:

  • 金宝app®内置的算法代码块

  • 生成的系统级代码(任务ID (TID)检查、管理功能,等等)

  • 从其他blocksets代码,包括定点设计师™产品和通信工具箱™产品

  • 从其他代码生成器代码,如MATLAB®功能

此外,代码生成器可以合并代码:

  • 嵌入式系统目标文件(例如,启动代码,设备驱动程序块)

  • 自定义S-functions或薄层色谱文件

请注意

编码标准对这两个来源是超出了控制代码生成器。这些标准可以是一个来源的合规问题,如使用中不支持C99特性的代码金宝appANSI C,C89 /人私下偷偷收藏盒式子集。

编程语言的注意事项

代码生成器生成C和c++代码。考虑以下你选择编程语言:

  • 你的项目需要你配置代码生成器使用特定的编译器吗?Windows上的C / c++代码生成®需要这个选择。

  • 你的项目需要你修改默认语言设置的配置模型?看到选择C或c++编程语言

  • 你的项目需要整合遗留或自定义代码生成的代码吗?集成选项的摘要,请参阅选择一个外部代码集成工作流

  • 你的项目需要你将C和c++代码?如果是这样,看到选择一个外部代码集成工作流

    请注意

    可以混合使用C和c++代码生成的代码与定制代码进行集成时。然而,你必须意识到差异C和c++联系约定违约,并添加的外来的“C”的链接说明符所需的地方。细节的约定和如何应用不同的联系外来的“C”,请参考一个c++编程语言参考书。

  • 你的项目需要代码生成支持从其他产品吗?下载188bet金宝搏金宝app看到c++语言支持的局限性金宝app

与Stateflow c++代码生成的例子®,请参阅sfcndemo_cppcount模型或sf_cpp模型。

c++语言支持的局限性金宝app

使用c++语言支持,您可能需要配置使用一金宝app个特定的编译器的代码生成器。例如,如果一个受支持的编译器没有安装金宝app微软®Windows电脑默认的编译器低成本航空MATLAB附带的C编译器产品。这个编译器不支持c++。金宝app如果您不配置代码生成器使用c++编译器指定的c++代码生成之前,软件会产生一个错误消息。

代码生成器限制c++支持包括:金宝app

  • 代码生成器不支持c++代码生成以下:金宝app

    Simscape™动力传动系统™
    Simscape多体™第一代(Simscape多体第二代的支持)金宝app
    Simscape电气™电力系统
    金宝app仿真软件实时™
  • 导和ERT-based系统目标文件代码接口包装设置为那种一次性的功能目前不支持,以下字段金宝app. cpp扩展。

    • 数据定义文件名

    • 定义文件对于一个数据对象,它是一个对象的金宝appSimulink.Signal金宝appSimulink.Parameter类或子类。

    如果你指定一个文件名. c扩展或者没有扩展和指定代码生成语言,c++代码生成器生成. cpp文件。

代码生成器假设包装带符号整数溢出

代码生成器生成减少内存使用量和提高代码执行通过假设C带符号整数操作封装在溢出。带符号整数溢出发生在算术运算的结果超出范围的值,输出数据类型可以表示。C编程语言没有定义这些操作的结果。积极一些C编译器优化签署业务范围内值溢出的条件。其他编译器保存完整的wrap-on-overflow行为。例如,海湾合作委员会和MinGW编译器提供一个选项来包装可靠地溢出带符号整数溢出。生成的程序模型可以形象产生的结果不同于模型仿真结果因为溢出的处理有所不同,取决于你的编译器。

生成代码时,如果您使用一个支持编译器默认选项配置代码生成器,编译器保存完整金宝app的wrap-on-overflow行为。如果你改变编译器选项或编译代码在另一个开发环境中,编译器不可能保存完整的wrap-on-overflow行为。在这种情况下,可执行程序可以产生不可预测的结果。

如果这个问题是关心您的应用程序,考虑一个或多个以下行为:

  • 验证编译后的代码产生预期的结果。

  • 如果你的编译器可以力包装行为,把它打开。例如,gcc编译器或基于gcc编译器,如MinGW配置构建过程使用编译器选项-fwrapv

  • 选择一个编译器包装整数溢出。

  • 如果你有嵌入式安装编码器,开发和应用自定义代码替换库替换代码生成的整数签署。有关更多信息,请参见代码替换定制

选择和配置编译器

查看安装编译器和选择默认的编译器,在命令窗口中,类型:

墨西哥人设置

在Windows计算机上,您可以安装金宝app支持编译器并选择一个默认的编译器。

在UNIX®平台,默认编译器是GNU®gcc / g + +GNU或XcodeMac

除非构建方法配置选择一个特定的编译器,代码生成器使用的默认编译器构建过程。

为主,指定的目标文件系统决定了代码生成器的编译器需要:

  • 如果你选择了一个toolchain-based系统目标文件等grt.tlc(通用实时目标),ert.tlc(嵌入式编码器®),或autosar.tlc(嵌入式编码器AUTOSAR)构建过程subpane显示配置参数构建过程。使用工具链配置参数来选择一个编译器和相关工具为您的模型构建。验证所选工具链,点击验证工具链

  • 如果您选择一个模板makefile (TMF)基于系统目标文件,等rsim.tlc,构建过程makefile subpane显示模板参数配置构建过程。的模板makefile参数显示的默认TMF文件选择目标文件系统。如果目标文件系统支持compiler-specifi金宝appc模板makefile(例如,快速模拟或功能系统目标文件),您可以设置模板makefilecompiler-specific TMF。有效的TMF的名字,看到不同产品的比较系统目标文件支持下载188bet金宝搏金宝app

如果生成的代码超过2 Gb的静态内存限制,出现编译错误。解决这一问题:

  • GRT-based系统目标文件,设置模型配置参数代码接口包装可重用的功能

  • ERT-based系统目标文件,设置模型配置参数代码接口包装可重用的功能并选择参数使用动态内存分配模型初始化

包括功能源代码

当代码生成器构建模型与S-functions, S-functions的源代码可以在当前文件夹或在同一文件夹MEX-file。代码生成器添加一个包含路径生成makefile时发现一个文件命名sfncname. h在相同的文件夹功能MEX-file。这个文件夹必须在MATLAB的道路。

同样,代码生成器添加一个规则当它发现一个文件的文件夹sfncname. c(或. cpp在相同的文件夹功能MEX-file。

相关的话题

外部网站