主要内容

TLC编码惯例

这些指南可以帮助你在每个目标文件应用编程风格一致。

标识符以大写字母开始

标识符的文件从一个大写字母开始。例如,

NumModelInputs 1 NumModelOutputs 2 NumNonVirtBlocksInModel 42 DirectFeedthrough是的NumContStates 10

因为一个的名字标识符可以提升为父范围,包含一块记录的名字标识符应该开始以一个大写字母的名称。例如,一个块可能包含

块{::RWork [4,0]: NumRWorkDefines 4 RWorkDefine{名称“TimeStampA”宽度1 StartIndex 0}}

因为的名字标识符在RWorkDefine记录被提升为PrevT在其母范围,它必须以一个大写字母开始。的推广的名字标识符到父块范围目前正在做的参数,RWorkDefine,IWorkDefine,PWorkDefine块记录。

目标语言编译器分配指令(%分配)生成一个警告如果你赋值为“不合格”标识符代码生成器。例如,

%分配TID = 1

产生一个错误,因为TID不合格的标识符。然而,一个“合格”的任务并不生成一个警告。例如,

%分配块。TID = 1

不会产生一个警告,因为作业包含一个限定符。因此目标语言编译器假定程序员有意修改一个标识符。

全局变量作业以大写字母开始

全球薄层色谱变量赋值应以大写字母开始。一个全局变量是一个系统目标文件中声明的变量(grt.tlc,mdlwide.tlc,mdlhdr.tlc,mdlbody.tlc,mdlreg.tlc,或mdlparam.tlc),或者在一个函数使用操作符。全球作业代码生成器变量具有相同的范围。全球TLC变量中定义的一个例子mdlwide.tlc

%分配InlineParameters = 1

全球参考函数的一个例子

% foo()函数void %分配:GlobalIdx =:: endfunction GlobalIdx + 1%

局部变量分配以小写字母开始

当地的薄层色谱变量赋值应该以小写字母开始。当地TLC变量是一个内部变量分配一个函数。例如,

%分配numBlockStates = ContStates [0]

功能块中声明的开始。薄层色谱文件Fcn

当你声明一个函数在一个block.tlc文件,它应该开始Fcn。例如,

%函数FcnMyBlockFunc (…)

请注意

函数声明在一个系统文件是全球性的;在一个声明的函数块文件是本地的。

不要硬编码变量定义在commonsetup.tlc吗

因为代码生成器使用的变量和基于使用生成的代码,您应该使用直接访问例程,而不是使用一个变量。例如,您不应该在薄层色谱中使用以下文件:

x = % < tInf >;

你应该使用

x = % < LibRealNonFinite(正)>;

类似地,而不是使用% < tTID >,使用% < LibTID () >。函数的完整列表,请参阅TLC函数库参考目标语言编译器

金宝app®编码器™全局变量入手rt金宝app仿真软件编码器全局函数入手rt_

避免全局变量命名模块开始rtrt_因为他们可能冲突金宝app仿真软件编码器全局变量和函数。这些薄层色谱中声明的变量commonsetup.tlc

本公约在目标文件创建一致的变量。例如,获得块包含以下输出函数。

指出关于这个TLC代码

一个。

每个块的代码部分始于一个注释指定块类型和名称。

b。

包括一个空行后立即结束的函数来创建一致的间距在输出代码块。

c。

尽量保持在80列每行函数的横幅。你可能会建立一个80列顶部的注释行每个函数。作为一个例子,看看constant.tlc

d。

为了一致性,使用变量sysIdxblkIdx分别对系统指标和块指标。

e。

使用变量rollVars当使用%卷构造。

f。

循环控制变量,命名时使用sigIdx液位控制阀当循环结束RollRegionsxidxxlcv当循环状态。

例子:输出函数gain.tlc

%辊sigIdx = RollRegions lcv = RollThreshold,…,“滚”,rollVars

例子:InitializeConditions函数linblock.tlc

%辊xidx = [0: nStates-1], xlcv = RollThreshold,…,“滚”,rollVars

条件包含库文件

目标语言编译器函数库文件是有条件地包含在保护代码,这样你就可以多次使用引用它们%包括不担心,如果他们之前已经被包括在内。遵循这种做法TLC创建的库文件。

公约是使用一个变量名称相同的文件名,大写字母和下划线连接两端。所以,一个文件命名customlib.tlc应变量_CUSTOMLIB_保护它。

作为一个例子,主要目标语言编译器函数库,funclib.tlc,包含这个TLC代码来防止多个包含:

%如果存在(“_FUNCLIB_”) = = 0%分配_FUNCLIB_ = 1。% endif % % _FUNCLIB_

代码的防守

作为薄层色谱的代码生成可用于引用模型在不可预知的情况下,不承担太多的关于名称空间。例如,当编写TLC代码块和添加类型定义,保护如果/ def,就像下面的例子说明了:

% openfile tmpBuff ifndef RESOLUTION_TYPEDEF typedef enum {LO_RES, HI_RES}决议;typedef struct {res的决议;int8_T价值;}数据;#定义RESOLUTION_TYPEDEF # endif / * RESOLUTION_TYPEDEF * / % closefile tmpBuff % < LibCacheTypedefs (tmpBuff) >;

相关的话题