文档

coder.cinclude

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

描述

例子

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

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

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

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){返回2 * u;}

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

#if !defined(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.h而且myMult2.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){返回2 * u;}

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

#if !defined(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);指定mymulti2 .h和mymulti2 .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代码

输入参数

全部折叠

指定为字符向量或字符串标量的头文件的名称。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,真的)

另请参阅

|

主题

介绍了R2013a