主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

代码生成模板 (CGT) 文件

代码生成模板 (CGT) 文件定义生成的源代码和头文件的顶级组织和格式。CGT 文件具有以下应用:

  • 在代码文件中生成自定义前注(注释部分)。请参阅Generate Custom File and Function Banners

  • 使用 CFP 模板生成自定义代码需要 CGT 文件。要使用 CFP 模板,您必须了解 CGT 文件结构。不过,在很多情况下,您可以使用默认的 CGT 文件而无需修改它。

默认 CGT 文件

代码生成软件提供了一个默认的 CGT 文件,matlabroot/toolbox/rtw/targets/ecoder/ert_code_template.cgt。以默认文件为基础创建自定义 CGT 文件。

CGT 文件结构

CGT 文件由一个必需部分和四个可选部分组成:

代码插入部分

(必需)此部分包含定义将生成的代码有序划分为多个部分(例如 IncludesDefines 部分)的标记。标记的形式如下:

%<SectionName>

例如,

%<Includes>

代码生成软件定义了一组最小的必需标记。这些标记生成 C 或 C++ 源代码或头代码。它们是内置标记(请参阅内置标记和部分)。您还可以定义自定义标记自定义部分

每个标记函数都充当生成代码相应部分的占位符。标记的顺序定义了相应部分在生成的代码中出现的顺序。如果不包含标记,则不会生成相应的部分。要将代码生成到给定部分,请从 CFP 模板明确调用代码模板 API,如 Custom File Processing (CFP) Templates 中所述。

CGT 标记定义生成代码的高级组织。使用代码模板 API,您可以将每个代码段划分为命名的小节,如 小节 中所述。

在代码插入部分,您还可以在标记之间插入 C 或 C++ 注释。这些注释直接发送到生成的代码中。

文件前注部分

(可选)此部分包含您在生成自定义文件前注时使用的注释和标记。

函数前注部分

(可选)此部分包含用于生成自定义函数前注的注释和标记。

共享实用工具函数前注部分

(可选)此部分包含用于生成自定义共享实用工具函数前注的注释和标记。

文件尾部

(可选)本节包含用于生成自定义预告片前注的注释。

有关更多信息,请参阅Generate Custom File and Function Banners

内置标记和部分

以下代码摘录显示了默认 CGT 文件中所需的代码插入部分以及所需的内置标记。

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Code insertion section (required)
%%   These are required tokens. You can insert comments and other tokens in
%% between them, but do not change their order or remove them.
%%
%<Includes>
%<Defines>
%<Types>
%<Enums>
%<Definitions>
%<Declarations>
%<Functions>

自定义 CGT 文件时请注意以下要求:

  • 不要删除所需的内置标记。

  • 内置标记必须按照显示的顺序出现,因为每个连续部分都依赖于前面的部分。

  • 每行只有一个标记。

  • 不要重复标记。

  • 只要不违反前面的要求,您就可以向代码插入部分添加自定义标记和注释。

注意

如果您修改 CGT 文件然后重建模型,则代码生成过程不会强制构建顶层模型。要重新生成代码,请参阅Force Regeneration of Top Model Code

下表总结了内置标记和相应的节名称,并描述了代码节。

内置 CGT 代币和相应的代码段

标记和部分名称

描述

Includes

#include 指令部分

Defines

#define 指令部分

Types

typedef section.Typedefs 可以依赖于先前定义的类型

Enums

枚举类型部分

Definitions

数据定义(例如,double x = 3.0;)

Declarations

数据声明(例如,extern double x;)

Functions

C 或 C++ 函数

小节

您可以为任何部分定义一个或多个命名小节。一些内置部分有预定义的小节,总结在表 为内置节定义的小节 中。

注意

节和小节按照 CGT 文件中列出的顺序发送到源文件或头文件。

使用自定义部分功能,您可以定义其他部分。请参阅Generate a Custom Section

为内置节定义的小节

小节

小节描述

Includes

不适用

 

Defines

不适用

 

Types

IntrinsicTypes

固有的 typedef 部分。固有类型仅依赖于内在 C 或 C++ 类型。

Types

PrimitiveTypedefs

原始的 typedef 部分。原始 typedef 仅依赖于固有 C 或 C++ 类型以及先前在 IntrinsicTypes 部分中定义的 typedef

Types

UserTop

您可以在本节中放置任何类型的代码,包括依赖于前面部分的代码。

Types

Typedefs

typedef 部分。Typedef 可以依赖于先前定义的类型

Enums

不适用

 

Definitions

不适用

 

Declarations

不适用

 

Functions

 

C 或 C++ 函数

Functions

CompilerErrors

#error 指令

Functions

CompilerWarnings

#warning 指令

Functions

Documentation

文档(注释)部分

Functions

UserBottom

您可以在此部分放置任何代码。