主要内容

编码器.Cinclude.

在生成的代码中包含标题文件

描述

例子

编码器.Cinclude(标题文件包括生成的C / C ++源代码中的标题文件。

马铃薯®编码器™在包含包含的MATLAB代码生成的C / C ++源文件中生成包含语句编码器.Cinclude.称呼。

在模拟中万博1manbetx®模型,当一个编码器.Cinclude.呼叫出现在一个Matlab功能块,代码生成器将包含语句放在模型标题文件中。

笔记

放置A.编码器.Cinclude.呼叫尽可能接近编码器.CEVAL.呼叫需要标题文件。

编码器.Cinclude(标题文件,'inallsourcefiles',全部文件用来全部文件选项以确定是否在几乎所有C / C ++源文件中包含标题文件。

如果全部文件真的Matlab编码器除了一些实用程序文件之外,在几乎所有C / C ++源文件中生成包含语句。这种行为是编码器.Cinclude.R2016A和早期版本的行为。在这些附加文件中的Include语句的存在可以增加编译时间并使生成的代码更少可读。仅当您的代码取决于遗留行为时才能使用此选项。如果全部文件错误的,行为与行为相同Coder.cinclude(标题文件)

在一个Matlab功能堵塞,Coder.clinclude(标题文件,'Inallsourcefiles',AllFiles)是相同的Coder.cinclude(标题文件)

例子

全部收缩

从Matlab函数生成代码,该函数调用外部C函数。用编码器.Cinclude.在生成的C代码中包含所需的头文件。

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

写一个c函数mymult2.c它的输入加倍。保存它mycfiles.

#include“mymult2.h”双重MyMult2(双U){返回2 * U;}

写下标题文件mymult2.h.。保存它mycfiles.

#if!定义(MyMult2)#define mymult2 exterw mymult2(双);#万一

写一个matlab函数,myfunc., 包括mymult2.h.并打电话myMult2.仅用于代码生成。

功能y = myfunc.%#codegen.y = 21;如果~coder.target('matlab'%在生成的代码中运行编码器.Cinclude('mymult2.h');y = coder.ceval('MyMult2',y);别的%在matlab中运行Y = Y * 2;结尾结尾

为静态库创建代码配置对象。指定位置mymult2.h.mymult2.c

cfg = coder.config('lib');cfg.custominclude = fullfile(pwd,'mycfiles');cfg.customsource = fullfile(pwd,'mycfiles''mymult2.c');

生成代码。

Codegen.-Config.CFG.myfunc.-报告

文件myfunc.c.包含此声明:

#include“mymult2.h”

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

从a生成代码Matlab功能调用外部C函数的块。用编码器.Cinclude.在生成的C代码中包含所需的头文件。

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

写一个c函数mymult2.c它的输入加倍。保存它mycfiles.

#include“mymult2.h”双重MyMult2(双U){返回2 * U;}

写下标题文件mymult2.h.。保存它mycfiles.

#if!定义(MyMult2)#define mymult2 exterw mymult2(双);#万一

创建一个包含a的S万博1manbetximulink模型Matlab功能块连接到一个外港堵塞。

在里面Matlab功能块,添加功能myfunc.包括mymult2.h.并打电话myMult2.

功能y = myfunc.%#codegen.y = 21;编码器.Cinclude('mymult2.h');y = coder.ceval('MyMult2',y);%指定myMult2.h和mymult2.c的位置编码器.Extrinsic('pwd''fullfile');customdir = coder.const(fullfile(pwd,'mycfiles'));Coder.updateBuildInfo('addincludepaths',海关);Coder.updateBuildInfo('addsourcepaths',海关);Coder.updateBuildInfo('addsourcefiles''mymult2.c');结尾

打开配置参数对话框。

在这一点求解器窗格,选择固定步骤求解器。

保存模型mymodel.

构建模型。

文件mymodel.h.包含此声明:

#include“mymult2.h”

要了解更多有关在Matlab功能块中集成自定义代码的信息,请参阅使用MATLAB功能块集成C代码(万博1manbetxSimulink)

输入参数

全部收缩

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

用角括号括起一个系统头文件名<>。生成#包括系统头文件的语句具有格式#include 。系统头文件必须位于标准位置或包含路径上。使用代码生成自定义代码参数指定包含路径。

例子:Coder.cinclude('')

对于不是系统标头文件的标题文件,省略角度括号。生成#包括NOT System Header文件的标题文件的语句具有格式#include“myheader”。标题文件必须位于当前文件夹中或包含路径上。使用代码生成自定义代码参数指定包含路径。

例子:Coder.cinclude('myheader.h')

数据类型:char

选项要在所有生成的C / C ++源文件中包含标题文件。如果全部文件真的Matlab编码器除了一些实用程序文件之外,几乎在所有C / C ++源文件中生成包含语句。如果全部文件错误的,行为与行为相同Coder.cinclude(标题文件)

在一个Matlab功能块,代码生成器忽略了所有源文件选项。

数据类型:逻辑

限制

  • 不要打电话编码器.Cinclude.内部运行时条件结构如如果陈述,转变陈述,尽管- 砍伐,而且为了- 砍伐。你可以打电话编码器.Cinclude.内部编译时条件陈述,例如编码器.Target.。例如:

    ......如果~coder.target('matlab')Coder.clinclude('foo.h');Coder.CEVAL('foo');结尾......

尖端

  • A之前编码器.CEVAL.打电话,打电话编码器.Cinclude.要包含外部功能所需的标题文件编码器.CEVAL.呼叫。

  • 生成的C / C ++代码中的语句可以增加编译时间并降低代码可读性。避免外文包括代码中的陈述Matlab编码器,遵循这些最佳实践:

    • 放置A.编码器.Cinclude.呼叫尽可能接近编码器.CEVAL.呼叫需要标题文件。

    • 没有设置全部文件真的

    为了Matlab功能块,代码生成器在模型标题文件中生成包含语句。

  • 在R2016A和早期的版本中,任何编码器.Cinclude.称呼,Matlab编码器在几乎所有生成的C / C ++源文件中包含标题文件,除了一些实用程序文件。如果您有代码取决于此遗留行为,则可以使用此语法保留遗留行为:

    Coder.cinclude(headerfile,'Inallsourcefiles',True)

在R2013A介绍