主要内容

coder.cinclude

在生成的代码中包含头文件

描述

例子

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

MATLAB®编码器™生成C/ c++源文件中的include语句,该C/ c++源文件是由包含coder.cinclude调用。

在仿真软件金宝app®模型中,当一个coder.cinclude调用出现在MATLAB函数块时,代码生成器将include语句放入模型头文件中。

请注意

放置一个coder.cinclude尽量靠近coder.ceval调用,它需要头文件。

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

如果allfiles真正的MATLAB编码器在几乎所有的C/ c++源文件中生成include语句,除了一些实用程序文件。这种行为是coder.cincludeR2016a和更早版本的行为。这些附加文件中包含的include语句会增加编译时间,并降低生成的代码的可读性。只有当您的代码依赖于遗留行为时才使用此选项。如果allfiles,该行为与该行为相同coder.cinclude (headerfile)

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

例子

全部折叠

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

在可写文件夹中,创建子文件夹mycfiles

编写一个C函数myMult2.c这使输入加倍。将其保存在mycfiles

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

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

#if !define (MYMULT2) #define MYMULT2 extern double MYMULT2 (double);# 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

#if !define (MYMULT2) #define MYMULT2 extern double MYMULT2 (double);# endif

创建一个包含金宝appMATLAB函数块连接到外港块。

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

函数y = myfunc% # codegeny = 21;coder.cinclude (“myMult2.h”);y = coder.ceval (“myMult2”, y);%指定myMult2.h和myMult2.c的位置coder.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代码(金宝app模型)

输入参数

全部折叠

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

用尖括号括住系统头文件名称< >.生成的# include语句的格式为# include < sysheader >.系统头文件必须位于标准位置或包含路径上。通过使用代码生成自定义代码参数指定包含路径。

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

对于不是系统头文件的头文件,省略尖括号。生成的# include语句用于不是系统头文件的头文件# include“到了头”.头文件必须在当前文件夹中或包含路径中。通过使用代码生成自定义代码参数指定包含路径。

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

数据类型:字符

选项包括头文件在所有生成的C/ c++源文件。如果allfiles真正的MATLAB编码器在几乎所有的C/ c++源文件中生成include语句,除了一些实用程序文件。如果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++代码中多余的include语句会增加编译时间并降低代码可读性。避免在代码中生成多余的include语句MATLAB编码器,请遵循以下最佳做法:

    • 放置一个coder.cinclude尽量靠近coder.ceval调用,它需要头文件。

    • 不设置allfiles真正的

    MATLAB函数块时,代码生成器在模型头文件中生成include语句。

  • 在R2016a和更早的版本,为任何coder.cinclude电话,MATLAB编码器在几乎所有生成的C/ c++源文件中都包含了头文件,除了一些实用程序文件。如果你有依赖于遗留行为的代码,你可以使用下面的语法来保留遗留行为:

    coder.cinclude (headerfile InAllSourceFiles,真的)

扩展功能

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

GPU的代码生成
使用GPU Coder™为NVIDIA®GPU生成CUDA®代码。

介绍了R2013a