主要内容

coder.cinclude

头文件包含在生成的代码

描述

例子

coder.cinclude (headerfile)包含一个头文件中生成的C / c++源代码。

MATLAB®编码器™生成包括语句生成C / c++源文件包含从MATLAB代码coder.cinclude调用。

在仿真软件万博1manbetx®模型中,当一个coder.cinclude电话出现在MATLAB函数块,代码生成器将包括在模型中声明头文件。

请注意

放置一个coder.cinclude叫尽可能接近coder.ceval电话,需要的头文件。

coder.cinclude (headerfile“InAllSourceFiles”,allfiles)使用allfiles选项来确定是否包含头文件在几乎所有C / c++源文件。

如果allfiles真正的,MATLAB编码器生成包括声明在几乎所有C / c++源文件,除了一些实用程序文件。这种行为是coder.cinclude行为从R2016a和更早的版本。包含这些额外的文件中声明的存在可以增加编译时间和减少生成的代码可读性。使用这个选项只有在代码取决于遗产的行为。如果allfiles的行为,这种行为是一样的coder.cinclude (headerfile)

在一个MATLAB函数块,coder.cinclude (headerfile,'InAllSourceFiles', allfiles)是一样的coder.cinclude (headerfile)

例子

全部折叠

生成代码的MATLAB函数调用外部C函数。使用coder.cinclude将所需的头文件包含在生成的C代码。

在一个可写的文件夹中,创建一个文件夹mycfiles

编写一个C函数myMult2.c双打其输入。将其保存在mycfiles

# include“myMult2.h”double myMult2(double u) { return 2 * u; }

写头文件myMult2.h。将其保存在mycfiles

#如果! (MYMULT2) # define定义MYMULT2走读生双MYMULT2(双);# endif

写一个MATLAB函数,myfunc,包括myMult2.h并调用myMult2对于代码生成。

函数y = myfunc% # codegeny = 21;如果~ coder.target (MATLAB的)%中运行生成的代码coder.cinclude (“myMult2.h”);y = coder.ceval (“myMult2”,y);其他的%在MATLAB运行y = y * 2;结束结束

创建一个配置对象的静态代码库。指定的位置myMult2.hmyMult2.c

cfg = coder.config (“自由”);cfg。CustomInclude = fullfile (pwd,“mycfiles”);cfg。CustomSource = fullfile (pwd,“mycfiles”,“myMult2.c”);

生成的代码。

codegen配置cfgmyfunc报告

该文件myfunc.c包含这个语句:

# include“myMult2.h”

include语句不出现在任何其他文件。

生成代码的MATLAB函数块调用外部C函数。使用coder.cinclude将所需的头文件包含在生成的C代码。

在一个可写的文件夹中,创建一个文件夹mycfiles

编写一个C函数myMult2.c双打其输入。将其保存在mycfiles

# include“myMult2.h”double myMult2(double u) { return 2 * u; }

写头文件myMult2.h。将其保存在mycfiles

#如果! (MYMULT2) # define定义MYMULT2走读生双MYMULT2(双);# endif

创建一个仿真软件模万博1manbetx型,其中包含一个MATLAB函数块连接到一个外港块。

这张图片显示了MATLAB函数块连接到一个输出港。

MATLAB函数块,添加功能myfunc包括myMult2.h并调用myMult2

函数y = myfunc% # codegeny = 21;coder.cinclude (“myMult2.h”);y = coder.ceval (“myMult2”,y);%指定myMult2的位置。h和myMult2.ccoder.extrinsic (“pwd”,“fullfile”);customDir = coder.const (fullfile (pwd,“mycfiles”));coder.updateBuildInfo (“addIncludePaths”,customDir);coder.updateBuildInfo (“addSourcePaths”,customDir);coder.updateBuildInfo (“addSourceFiles”,“myMult2.c”);结束

打开配置参数对话框。

解算器窗格中,选择一个固定的解决者。

保存模型mymodel

构建的模型。

该文件mymodel.h包含这个语句:

# include“myMult2.h”

阅读更多关于MATLAB功能块集成定制代码,看看通过使用MATLAB功能块集成C代码(万博1manbetx模型)

输入参数

全部折叠

头文件名称指定为一个特征向量或字符串标量。headerfile必须是一个编译时常量。

在尖括号附上一个系统头文件的名字< >。生成的# include声明一个系统头文件格式# include < sysheader >。系统头文件必须包括在标准的位置或路径。指定包含路径通过使用代码生成自定义代码参数。

例子:coder.cinclude (“< sysheader.h >”)

的头文件不是一个系统头文件,省略了尖括号。生成的# include声明的头文件不是一个系统头文件格式# include“到了头”。头文件必须在当前文件夹或包含路径。指定包含路径通过使用代码生成自定义代码参数。

例子:coder.cinclude (“myheader.h”)

数据类型:字符

选项包括头文件在所有生成的C / c++源文件。如果allfiles真正的,MATLAB编码器生成声明包含在几乎所有的C / c++源文件,除了一些实用程序文件。如果allfiles的行为,这种行为是一样的coder.cinclude (headerfile)

在一个MATLAB函数块,代码生成器忽略了所有源文件的选择。

数据类型:逻辑

限制

  • 不叫coder.cinclude内部运行时条件结构等如果语句,开关语句,循环,循环。你可以叫coder.cinclude在编译时条件语句,如coder.target。例如:

    如果~ coder.target (MATLAB的)coder.cinclude (“foo”);coder.ceval (“foo”);结束

提示

  • 之前coder.ceval叫,叫coder.cinclude包括外部函数所需的头文件coder.ceval调用。

  • 无关的声明包括在生成的C / c++代码可以增加编译时间和减少代码的可读性。为了避免无关的声明包括在生成的代码MATLAB编码器遵循这些最佳实践:

    • 放置一个coder.cinclude叫尽可能接近coder.ceval电话,需要的头文件。

    • 不设置allfiles真正的

    MATLAB函数块,代码生成器生成包括在模型中声明头文件。

  • R2016a和更早的版本中,对于任何一个coder.cinclude电话,MATLAB编码器包括几乎所有的头文件生成的C / c++源文件,除了一些实用程序文件。如果你有代码取决于这种遗产的行为,您可以保留遗留行为通过使用这种语法:

    coder.cinclude (headerfile InAllSourceFiles,真的)

扩展功能

C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。

GPU的代码生成
生成NVIDIA的CUDA®代码®GPU使用GPU编码器™。

版本历史

介绍了R2013a