文档中的所有命令都以反斜杠(\)或 at 符号(@)开头。如果您愿意,可以将下面所有以反斜杠开头的命令替换为其以 at 符号开头的对应命令。
一些命令有一个或多个参数。每个参数都有一定的范围
如果除了上述参数说明符外,还使用了 [square] 方括号,则参数是可选的,除非它们放在引号之间,在这种情况下,它们是命令参数的强制部分。
以下子章节提供了 Doxygen 识别的所有命令列表。未识别的命令将被视为普通文本。
定义一个组,就像 \defgroup 一样,但与该命令不同的是,使用相同的 <name> 多次不会导致警告,而是会合并文档的组,并使用任何一个命令中找到的第一个标题。
标题是可选的,因此该命令也可以用于使用 @{ 和 @} 将一些实体添加到现有组中,如下所示:
/*! \addtogroup mygrp
* Additional documentation for group 'mygrp'
* @{
*/
/*!
* A function
*/
void func1()
{
}
/*! Another function */
void func2()
{
}
/*! @} */
当此命令放在函数或方法的注释块中,并且 HAVE_DOT 设置为 YES 时,Doxygen 将为该函数生成调用图(前提是该函数或方法的实现调用了其他已记录的函数)。调用图的生成与 CALL_GRAPH 的值无关。
当此命令放在函数或方法的注释块中时,Doxygen 将不会为该函数生成调用图。调用图的生成与 CALL_GRAPH 的值无关。
当此命令放在函数或方法的注释块中,并且 HAVE_DOT 设置为 YES 时,Doxygen 将为该函数生成调用者图(前提是该函数或方法的实现被其他已记录的函数调用)。调用者图的生成与 CALLER_GRAPH 的值无关。
当此命令放在函数或方法的注释块中时,Doxygen 将不会为该函数生成调用者图。调用者图的生成与 CALLER_GRAPH 的值无关。
当此命令放在函数、方法或变量的注释块中时,Doxygen 将为该函数、方法、变量生成一个关于调用/使用它的已记录函数和方法的概述。该概述的生成与 REFERENCED_BY_RELATION 的值无关。
当此命令放在函数、方法或变量的注释块中时,Doxygen 将不会为该函数、方法或变量生成关于调用/使用它的函数和方法的概述。该概述的生成与 REFERENCED_BY_RELATION 的值无关。
当此命令放在函数或方法的注释块中时,Doxygen 将为该函数或方法生成一个关于调用它的函数和方法的概述。该概述的生成与 REFERENCES_RELATION 的值无关。
当此命令放在函数或方法的注释块中时,Doxygen 将不会为该函数或方法生成关于调用它的函数和方法的概述。该概述的生成与 REFERENCES_RELATION 的值无关。
当此命令放在函数、多行宏、枚举或已初始化变量的注释块中时,Doxygen 将为该成员生成内联源代码。内联源代码的生成与 INLINE_SOURCES 的值无关。
当此命令放在函数、多行宏、枚举或已初始化变量的注释块中时,Doxygen 将不会为该成员生成内联源代码。内联源代码的生成与 INLINE_SOURCES 的值无关。
当此命令放在文件的注释块中时,Doxygen 将为该文件生成一个包含图。包含图的生成与 INCLUDE_GRAPH 的值无关。
当此命令放在文件的注释块中时,Doxygen 将不会为该文件生成包含图。包含图的生成与 INCLUDE_GRAPH 的值无关。
当此命令放在包含文件的注释块中时,Doxygen 将为该包含文件生成一个被包含图。被包含图的生成与 INCLUDED_BY_GRAPH 的值无关。
当此命令放在包含文件的注释块中时,Doxygen 将不会为该包含文件生成被包含图。被包含图的生成与 INCLUDED_BY_GRAPH 的值无关。
当此命令放在目录的注释块中时(参见章节 \dir),Doxygen 将为该目录生成一个目录图。目录图的生成与 DIRECTORY_GRAPH 的值无关。
当此命令放在目录的注释块中时(参见章节 \dir),Doxygen 将不会为该目录生成目录图。目录图的生成与 DIRECTORY_GRAPH 的值无关。
当此命令放在类的注释块中时,Doxygen 将为该类生成一个协作图。协作图的生成与 COLLABORATION_GRAPH 的值无关。
当此命令放在类的注释块中时,Doxygen 将不会为该类生成协作图。协作图的生成与 COLLABORATION_GRAPH 的值无关。
当此命令放在类的注释块中时,Doxygen 将为该类生成一个符合 option 的继承图。继承图的生成,符合 option,与 CLASS_GRAPH 的值无关。 option 的可能值与 CLASS_GRAPH 可用的值相同。如果没有指定 option,则假定值为 YES。
当此命令放在类的注释块中时,Doxygen 将不会为该类生成继承图。继承图的生成与 CLASS_GRAPH 的值无关。
当此命令放在 \defgroup 命令的注释块中时,Doxygen 将为该组生成一个组依赖图。组图的生成与 GROUP_GRAPHS 的值无关。
当此命令放在 \defgroup 命令的注释块中时,Doxygen 将不会为该组生成组依赖图。组图的生成与 GROUP_GRAPHS 的值无关。
当此命令放在枚举的注释块中时,doxygen 将显示该枚举指定的枚举值,而与 SHOW_ENUM_VALUES 的值无关。
当此命令放在枚举的注释块中时,doxygen 将不会显示该枚举指定的枚举值,而与 SHOW_ENUM_VALUES 的值无关。
使用此命令可以为成员和类添加自定义的限定符标签。这些标签将在输出中以与自动生成的标签(如“static”、“inline”和“final”)相同的方式显示。
例如,要指示一个函数仅用于测试目的,可以添加 \qualifier test
仅适用于 Objective-C:指示注释块包含类类别(category)的文档,名称为 <name>。参数与 \class 命令相同。
指示注释块包含类 <name> 的文档。可选地,可以指定头文件和头名称。如果指定了头文件,则会在 HTML 文档中包含指向该头文件逐字副本的链接。<header-name> 参数可用于覆盖类文档中使用的链接名称,使其不为 <header-file>。当包含名称不在默认包含路径(如 <X11/X.h>)时,这可能很有用。通过 <header-name> 参数,还可以通过在名称周围添加引号或尖括号来指定包含语句应如何显示。如果只给出名称,则使用尖括号。请注意,最后两个参数也可以使用 \headerfile 命令指定。
指示注释块包含 C++20 concept 的文档,名称为 <name>。另请参阅 \headerfile 命令来指定用户应包含以使用 concept 的头文件。
指示注释块包含类、模块、概念、文件或命名空间的 Topics 的文档。这可用于对符号进行分类和记录这些类别。您还可以使用组作为其他组的成员,从而构建组的层次结构。
<name> 参数应该是单个单词标识符。
指示注释块包含目录的文档。“path fragment”参数应包含目录名称以及足够多的路径,以便在项目中与其他目录区分开来。STRIP_FROM_PATH 选项决定在输出显示之前从完整路径中剥离什么。
指示注释块包含名为 <name> 的枚举的文档。如果枚举是类的一个成员,并且注释块位于类定义之外,则应同时指定类的作用域。如果注释块直接位于枚举声明前面,则可以省略 \enum 注释。
指示注释块包含源代码示例的文档。源文件名是 <file-name>。该文件的内容将包含在文档中,紧随注释块中的文档之后。您可以添加选项 {lineno} 来为示例启用行号。所有示例都放在一个列表中。源代码会扫描已记录的成员和类。如果找到任何内容,则名称会与文档进行交叉引用。源文件或目录可以使用 Doxygen 配置文件中的 EXAMPLE_PATH 标签指定。
如果 <file-name> 本身对于 EXAMPLE_PATH 标签指定的示例文件集不是唯一的,则可以包含绝对路径的一部分以消歧义。
如果示例需要多个源文件,可以使用 \include 命令。
example_test.cpp 如下所示 此命令结束了使用 \internal 命令开始的文档片段。\internal 和 \endinternal 之间的文本只有在 INTERNAL_DOCS 设置为 YES 时才可见。
当编程语言本身不支持继承概念时(例如 C),可以使用此命令手动指示继承关系。
示例目录中的文件 manual.c 展示了如何使用此命令(另请参阅 \memberof 获取完整文件)。
点击 此处 获取 Doxygen 生成的相应 HTML 文档。
表明注释块包含有关名为 <name> 的源文件或头文件的文档。如果文件名本身不唯一,则文件名可能包含路径(部分或全部)。如果省略文件名(即 \file 之后的行留空),则包含 \file 命令的文档块将属于其所在的文件的文档。
YES 时才会包含在输出中。JAVADOC_AUTOBRIEF 已在配置文件中设置为 YES。显示放置此命令的文件名(或部分文件名)。option 可以是 name、extension、filename、directory 或 full,其中
如果未指定选项,则使用 filename,除非 FULL_PATH_NAMES 设置为 YES,在这种情况下将使用 full。
表明注释块包含函数(全局函数或类成员函数)的文档。只有当注释块*不*位于函数声明或定义的前面(或后面)时,才需要此命令。
如果您的注释块*位于*函数声明或定义的前面,则可以(为了避免冗余,应该)省略此命令。
包含参数的完整函数声明应写在 \fn 命令之后,并占一行,因为参数在行尾结束!
此命令等同于 \var、\typedef 和 \property。
intended to be used for class, struct, or union documentation, where the documentation is in front of the definition. The arguments of this command are the same as the second and third argument of \class. The <header-file> name refers to the file that should be included by the application to obtain the definition of the class, struct, or union. The <header-name> argument can be used to overwrite the name of the link that is used in the class documentation to something other than <header-file>. This can be useful if the include name is not located on the default include path (like <X11/X.h>).
With the <header-name> argument you can also specify how the include statement should look like, by adding either double quotes or sharp brackets around the name. By default sharp brackets are used if just the name is given.
If a pair of double quotes is given for either the <header-file> or <header-name> argument, the current file (in which the command was found) will be used but with quotes. So for a comment block with a \headerfile command inside a file test.h, the following three commands are equivalent
\headerfile test.h "test.h" \headerfile test.h "" \headerfile ""
To get sharp brackets you do not need to specify anything, but if you want to be explicit you could use any of the following
\headerfile test.h <test.h> \headerfile test.h <> \headerfile <>
To globally reverse the default include representation to local includes you can set FORCE_LOCAL_INCLUDES to YES.
To disable the include information altogether set SHOW_HEADERFILE to NO.
By default the value of a define and the initializer of a variable are displayed unless they are longer than 30 lines. By putting this command in a comment block of a define or variable, the initializer is always hidden. The maximum number of initialization lines can be changed by means of the configuration parameter MAX_INITIALIZER_LINES, the default value is 30.
Indicates that a comment block contains documentation for an IDL exception with name <name>.
当编程语言本身不支持继承概念时(例如 C),可以使用此命令手动指示继承关系。
示例目录中的文件 manual.c 展示了如何使用此命令(另请参阅 \memberof 获取完整文件)。
点击 此处 获取 Doxygen 生成的相应 HTML 文档。
If the \ingroup command is placed in a comment block of a compound entity (like class, file or namespace), then it will be added to the group(s) identified by the <groupname>(s). In case of members (like variable, functions, typedefs and enums) the member will be added only to one group (to avoid ambiguous linking targets in case a member is not documented in the context of its class, namespace or file, but only visible as part of a group).
Indicates that a comment block contains documentation for an interface with name <name>. The arguments are equal to the arguments of the \class command.
This command starts a documentation fragment that is meant for internal use only. The fragment naturally ends at the end of the comment block. You can also force the internal section to end earlier by using the \endinternal command.
If the \internal command is put inside a section (see for example \section) all subsections after the command are considered to be internal as well. Only a new section at the same level will end the fragment that is considered internal.
You can use INTERNAL_DOCS in the configuration file to show (YES) or hide (NO) the internal documentation.
If the \mainpage command is placed in a comment block the block is used to customize the index page (in HTML) or the first chapter (in
).
The title argument is optional and replaces the default title that Doxygen normally generates. If you do not want any title you can specify notitle as the argument of \mainpage.
这是一个例子
/*! \mainpage My Personal Index Page * * \section intro_sec Introduction * * This is the introduction. * * \section install_sec Installation * * \subsection step1 Step 1: Opening the box * * etc... */
You can refer to the main page using: \ref index.
This command makes a function a member of a class in a similar way as \relates does, only with this command the function is represented as a real member of the class. This can be useful when the programming language does not support the concept of member functions natively (e.g. C).
It is also possible to use this command together with \public、\protected or \private。
manual.c in the example directory shows how to use this commandIndicates that a comment block contains documentation for a C++20 module with name <name>.
This command turns a comment block into a header definition of a member group. The comment block should be followed by a @{ ... @} block containing the members of the group.
See section Member Groups for an example.
This command can be put in the documentation of a class. It can be used in combination with member grouping to avoid that Doxygen puts a member group as a subgroup of a Public/Protected/Private/... section.
This command can be used to generate the following standard text for an overloaded member function
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
If the documentation for the overloaded member function is not located in front of the function declaration or definition, the optional argument should be used to specify the correct declaration of the overloaded function. Of course when the \overload command is directly in front of the overloaded member function and the optional argument is used this should also be the correct declaration of the overloaded function.
Any other documentation that is inside the documentation block will by appended after the generated message.
NO in this case.Indicates that a comment block contains documentation for a Java package with name <name>.
Indicates that a comment block contains a piece of documentation that is not directly related to one specific class, file or member. The HTML generator creates a page containing the documentation. The
generator starts a new section in the chapter 'Page documentation'.
MYPAGE1), or mixed case letters (e.g. MyPage1) in the <name> argument, you should set CASE_SENSE_NAMES to YES. However, this is advisable only if your file system is case sensitive. Otherwise (and for better portability) you should use all lower case letters (e.g. mypage1) for <name> in all references to the page.Indicates that the member documented by the comment block is private, i.e., should only be accessed by other members in the same class.
Note that Doxygen automatically detects the protection level of members in object-oriented languages. This command is intended for use only when the language does not support the concept of protection level natively (e.g. C, PHP 4).
For starting a section of private members, in a way similar to the "private:" class marker in C++, use \privatesection.
Starting a section of private members, in a way similar to the "private:" class marker in C++. Indicates that the member documented by the comment block is private, i.e., should only be accessed by other members in the same class.
Indicates that a comment block contains documentation for a property (either global or as a member of a class). This command is equivalent to \fn, \typedef, and \var.
Indicates that the member documented by the comment block is protected, i.e., should only be accessed by other members in the same or derived classes.
Note that Doxygen automatically detects the protection level of members in object-oriented languages. This command is intended for use only when the language does not support the concept of protection level natively (e.g. C, PHP 4).
For starting a section of protected members, in a way similar to the "protected:" class marker in C++, use \protectedsection.
Starting a section of protected members, in a way similar to the "protected:" class marker in C++. Indicates that the member documented by the comment block is protected, i.e., should only be accessed by other members in the same or derived classes.
Indicates that a comment block contains documentation for a protocol in Objective-C with name <name>. The arguments are equal to the \class command.
Indicates that the member documented by the comment block is public, i.e., can be accessed by any other class or function.
Note that Doxygen automatically detects the protection level of members in object-oriented languages. This command is intended for use only when the language does not support the concept of protection level natively (e.g. C, PHP 4).
For starting a section of public members, in a way similar to the "public:" class marker in C++, use \publicsection.
Starting a section of public members, in a way similar to the "public:" class marker in C++. Indicates that the member documented by the comment block is public, i.e., can be accessed by any other class or function.
Indicates that the member documented by the comment block is pure virtual, i.e., it is abstract and has no implementation associated with it.
This command is intended for use only when the language does not support the concept of pure virtual methods natively (e.g. C, PHP 4).
This command can be used in the documentation of a non-member function <name>. It puts the function inside the 'related function' section of the class documentation. This command is useful for documenting non-friend functions that are nevertheless strongly coupled to a certain class. It prevents the need of having to document a file, but only works for functions.
Equivalent to \relates
This command can be used in the documentation of a non-member function <name>. It puts the function both inside the 'related function' section of the class documentation as well as leaving it at its normal file documentation location. This command is useful for documenting non-friend functions that are nevertheless strongly coupled to a certain class. It only works for functions.
Equivalent to \relatesalso
Indicates that a comment block contains documentation for a requirement. In the output, all requirements are collected on a single page.
A requirement can be referred to by its <id> using the normal linking commands like \ref. There are two special commands to refer to a requirement.
结合使用 \satisfies 和 \verifies 命令有助于提供可追溯性信息,以显示代码中需求已实现和/或测试的位置。
也可以通过标签文件导入需求。
默认情况下,仅当 define 的值和变量的初始化程序少于 30 行时,它们才会被显示。通过将此命令放入 define 或变量的注释块中,初始化程序将无条件显示。初始化行数的最大值可以通过配置参数 MAX_INITIALIZER_LINES 来更改,默认值为 30。
表明由注释块文档化的成员是静态的,即它作用于类本身,而不是类的实例。
此命令仅适用于语言本身不支持静态方法概念的情况(例如 C)。
表明注释块包含一个名为 <name> 的 struct 的文档。参数与 \class 命令的参数相同。
表明注释块包含一个 typedef(全局或类成员)的文档。此命令等同于 \fn、\property 和 \var。
表明注释块包含一个名为 <name> 的 union 的文档。参数与 \class 命令的参数相同。
表明注释块包含一个变量或枚举值的文档(全局或类成员)。此命令等同于 \fn、\property 和 \typedef。
注意,对于 PHP,还可以指定变量的类型。语法类似于 phpDocumentor,但描述必须从下一行开始,即:
@var datatype $varname Description
这是一个 VHDL 特定的命令,可以放在进程的文档中,以生成进程中逻辑的流程图。还可以选择性地提供流程图的标题。
可用于与 \addtogroup 完全相同的目的,但在解决冲突的组定义时优先级较低。
开始一个段落,用于输入需要注意的消息。该段落将被缩进。段落的文本没有特殊的内部结构。所有视觉增强命令都可以在段落内使用。多个相邻的 \attention 命令将被合并成一个段落。当遇到空行或其他分节命令时,\attention 命令结束。
开始一个段落,用于输入一个或多个作者姓名。该段落将被缩进。段落的文本没有特殊的内部结构。所有视觉增强命令都可以在段落内使用。多个相邻的 \author 命令将被合并成一个段落。每个作者描述将从新行开始。或者,一个 \author 命令可以包含多个作者。当遇到空行或其他分节命令时,\author 命令结束。
等同于 \author。
开始一个段落,用作简要描述。对于类和文件,简要描述将用于列表和文档页面开头。对于类和文件成员,简要描述将放在成员声明处,并置于详细描述之前。简要描述可以跨越多行(但建议保持简短!)。当遇到空行或其他分节命令时,简要描述结束。如果存在多个 \brief 命令,它们将被合并。请参见 \author 部分的示例。
与 \short 同义。
开始一个段落,用于报告一个或多个 bug。该段落将被缩进。段落的文本没有特殊的内部结构。所有视觉增强命令都可以在段落内使用。多个相邻的 \bug 命令将被合并成一个段落。每个 bug 描述将从新行开始。或者,一个 \bug 命令可以包含多个 bug。当遇到空行或其他分节命令时,\bug 命令结束。请参见 \author 部分的示例。
描述还将向单独的 Bug 列表添加一个条目,这两个描述实例将被交叉引用。Bug 列表中的每个条目前面都会有一个标头,指示该条目的来源。
可以通过将 GENERATE_BUGLIST 设置为 NO 来禁用 Bug 列表和相应的条目。
开始一个条件段,该段以相应的 \endcond 命令结束,该命令通常在另一个注释块中找到。此命令对的主要目的是(有条件地)排除文件的一部分进行处理(在 Doxygen 的旧版本中,只能使用 C 预处理器命令来实现)。
\cond 和 \endcond 之间的段可以包含在配置选项 ENABLED_SECTIONS 中添加其节标签。如果省略节标签,则该节将无条件地排除在处理之外。节标签可以是基于节标签、圆括号、&&(AND)、||(OR)和 !(NOT)的逻辑表达式。如果使用表达式,则需要将其括在圆括号中,例如 \cond (!LABEL1 && LABEL2)。
对于注释块内的条件段,应使用 \if ... \endif 块。使用 \cond 且条件不满足时,将结束当前的注释块,并删除匹配的 \endcond 之前的所有内容,并在那里开始一个新的命令块。
条件段可以嵌套。在这种情况下,仅当嵌套段及其包含的段都包含在内时,嵌套段才会显示。
下面是一个展示这些命令如何工作的示例
/** An interface */
class Intf
{
public:
/** A method */
virtual void func() = 0;
/// @cond TEST
/** A method used for testing */
virtual void test() = 0;
/// @endcond
};
/// @cond DEV
/*
* The implementation of the interface
*/
class Implementation : public Intf
{
public:
void func();
/// @cond TEST
void test();
/// @endcond
/// @cond
/** This method is obsolete and does
* not show up in the documentation.
*/
void obsolete();
/// @endcond
};
/// @endcond
输出将根据 ENABLED_SECTIONS 是否包含 TEST 或 DEV 而有所不同。
开始一个段落,用于描述实体的版权。此段落将被缩进。段落的文本没有特殊的内部结构。请参见 \author 部分的示例。
开始一个段落,用于输入一个或多个日期。该段落将被缩进。段落的文本没有特殊的内部结构。所有视觉增强命令都可以在段落内使用。多个相邻的 \date 命令将被合并成一个段落。每个日期描述将从新行开始。或者,一个 \date 命令可以包含多个日期。当遇到空行或其他分节命令时,\date 命令结束。请参见 \author 部分的示例。
根据给定的 <format> 和 <date_time> 显示日期和时间。其中 <format> 是一个字符串,其中的以下标记具有特殊含义:
| Code | 描述 |
|---|---|
| %y | 年份(不带世纪),零填充的十进制数字。 |
| %Y | 年份(带世纪),十进制数字。 |
| %m | 月份,零填充的十进制数字。 |
| %-m | 月份,十进制数字。 |
| %b | 月份的缩写名称(根据区域设置)。 |
| %B | 月份的全称(根据区域设置)。 |
| %d | 月份中的日期,零填充的十进制数字。 |
| %-d | 月份中的日期,十进制数字。 |
| %u | 星期几,十进制数字(1-7),星期一为 1。 |
| %w | 星期几,十进制数字(0-6),星期日为 0。 |
| %a | 星期几的缩写名称(根据区域设置)。 |
| %A | 星期几的全称(根据区域设置)。 |
| %H | 小时(24 小时制),零填充的十进制数字。 |
| %-H | 小时(24 小时制),十进制数字。 |
| %I | 小时(12 小时制),零填充的十进制数字。 |
| %-I | 小时(12 小时制),十进制数字。 |
| %M | 分钟,零填充的十进制数字。 |
| %-M | 分钟,十进制数字。 |
| %S | 秒,零填充的十进制数字。 |
| %-S | 秒,十进制数字。 |
| %p | 区域设置中的 AM 或 PM。 |
| %% | 一个 % 字符。 |
注意,<format> 必须用双引号括起来。
如果指定了 <date_time>,则必须具有以下表示形式:
如果未指定 <date_time>,则使用当前日期和时间。
这是一个例子
当 OUTPUT_LANGUAGE=english 时,结果如下:
当 OUTPUT_LANGUAGE=dutch 时,结果如下:
开始一个段落,表示此文档块属于一个已弃用的实体。可用于描述替代方案、预期生命周期等。该段落将被缩进。段落的文本没有特殊的内部结构。所有视觉增强命令都可以在段落内使用。多个相邻的 \deprecated 命令将被合并成一个段落。每个弃用描述将从新行开始。当遇到空行或其他分节命令时,\deprecated 命令结束。
描述还将向单独的 Deprecated 列表添加一个条目,这两个描述实例将被交叉引用。Deprecated 列表中的每个条目前面都会有一个标头,指示该条目的来源。
可以通过将 GENERATE_DEPRECATEDLIST 设置为 NO 来禁用 Deprecated 列表和相应的条目。
就像 \brief 开始简要描述一样,\details 开始详细描述。您也可以开始一个新段落(空行),此时不需要 \details 命令。
该行上的所有文本(包括命令)将被忽略。此命令最常与 ALIASES 结合使用,以忽略不受支持的命令,这些命令可能存在于其他处理工具中。
该行上的所有文本(不包括命令)将被原样显示为文档警告。文本(包括命令)将从输出中移除。此命令最常与 ALIASES 结合使用,以显示特定警告。
\raisewarning My specific warning
\warnNoDoc
\warnNoDoc{My specific warning}
与ALIASES = warnNoDoc="\raisewarning Missing documentation"
ALIASES += warnNoDoc{1}="\raisewarning Incomplete documentation: \1"
将产生ex_1.md:1: warning: My specific warning ex_1.md:3: warning: Missing documentation ex_1.md:5: warning: Incomplete documentation: My specific warning
如果之前的条件段未启用,则开始一个条件段。之前的段应以 \if、\ifnot 或 \elseif 命令开始。
如果之前的段未启用,则开始一个条件文档段。条件段默认是禁用的。要启用它,您必须在配置文件中的 ENABLED_SECTIONS 标签之后放置节标签。节标签可以是基于节名称、圆括号、&&(AND)、||(OR)和 !(NOT)的逻辑表达式。条件块可以嵌套。嵌套段仅在所有包含的段都已启用时才启用。
结束一个由 \cond 开始的条件段。
结束一个由 \if 或 \ifnot 开始的条件段。对于每个 \if 或 \ifnot,必须有一个且仅一个匹配的 \endif。
为名为 <exception-object> 的异常对象开始异常描述。后面跟着异常的描述。异常对象是否存在未被检查。段落的文本没有特殊的内部结构。所有视觉增强命令都可以在段落内使用。多个相邻的 \exception 命令将被合并成一个段落。每个异常描述将从新行开始。当遇到空行或其他分节命令时,\exception 描述结束。请参见 \fn 部分的示例。
开始一个条件文档段。该段以匹配的 \endif 命令结束。条件段默认是禁用的。要启用它,您必须在配置文件中的 ENABLED_SECTIONS 标签之后放置节标签。
节标签可以是基于节名称、圆括号、&&(AND)、||(OR)和 !(NOT)的逻辑表达式。如果使用表达式,则需要将其括在圆括号中,例如 \if (!LABEL1 && LABEL2)。
条件块可以嵌套。只有当所有包含的块都启用时,嵌套块才会被启用。
\if 和匹配的 \endif 必须在同一个注释块中。当条件块需要跨越多个注释块时,必须使用 \cond ... \endcond。
/*! Unconditionally shown documentation. * \if Cond1 * Only included if Cond1 is set. * \endif * \if Cond2 * Only included if Cond2 is set. * \if Cond3 * Only included if Cond2 and Cond3 are set. * \endif * More text. * \endif * Unconditional text. */
您也可以在别名中使用条件命令。例如,要用两种语言文档化一个类,可以使用
/*! \english
* This is English.
* \endenglish
* \dutch
* Dit is Nederlands.
* \enddutch
*/
class Example
{
};
其中配置文件中定义了以下别名:
ALIASES = "english=\if english" \
"endenglish=\endif" \
"dutch=\if dutch" \
"enddutch=\endif"
并且 ENABLED_SECTIONS 可用于启用 english 或 dutch。
开始一个条件文档段。该段以匹配的 \endif 命令结束。此条件段默认启用。要禁用它,您必须在配置文件中的 ENABLED_SECTIONS 标签之后放置节标签。节标签可以是基于节名称、圆括号、&&(AND)、||(OR)和 !(NOT)的逻辑表达式。
开始一个段落,用于输入重要消息。该段落将被缩进。段落的文本没有特殊的内部结构。所有视觉增强命令都可以在段落内使用。多个相邻的 \important 命令将被合并成一个段落。当遇到空行或其他分节命令时,\important 命令结束。
开始一个段落,用于描述实体的不变式。该段落将被缩进。段落的文本没有特殊的内部结构。所有视觉增强命令都可以在段落内使用。多个相邻的 \invariant 命令将被合并成一个段落。每个不变式描述将从新行开始。或者,一个 \invariant 命令可以包含多个不变式。当遇到空行或其他分节命令时,\invariant 命令结束。
开始一个段落,用于输入注释。该段落将被缩进。段落的文本没有特殊的内部结构。所有视觉增强命令都可以在段落内使用。多个相邻的 \note 命令将被合并成一个段落。每个注释描述将从新行开始。或者,一个 \note 命令可以包含多个注释。当遇到空行或其他分节命令时,\note 命令结束。请参见 \par 部分的示例。
如果给定了段落标题,此命令将开始一个具有用户定义标题的段落。标题一直持续到行尾。命令后面的段落将被缩进。
如果没有给出段落标题,此命令将开始一个新段落。这也将在其他段落命令(如 \param 或 \warning)内部工作,而不会结束该命令。
段落的文本没有特殊的内部结构。所有视觉增强命令都可以在段落内使用。\par 命令在遇到空行或其他分节命令时结束。
启动一个函数参数的参数描述,参数名为 <parameter-name>,后跟参数的描述。会检查参数是否存在,如果函数声明或定义中缺少此参数(或其他任何参数)的文档,则会发出警告。
\param 命令有一个可选属性 <dir>,指定参数的方向。可能的值为“[in]”、“[out]”和“[in,out]”;请注意此描述中的 [方括号]。对于双向值,方向“in”和“out”可以按任何顺序指定,并且可以一起书写,或用逗号(,)或空格分隔。这意味着,例如值“[outin]”或“[in out]”也是有效的。请注意,也可以在命令和 <dir> 之间添加空格。当参数既是输入又是输出时,使用 [in,out] 作为属性。下面是函数 memcpy 的一个示例:
参数描述是一个没有特殊内部结构的段落。段落内可以使用所有视觉增强命令。
多个相邻的 \param 命令将被合并成一个段落。每个参数描述将从新行开始。\param 描述在遇到空行或其他节命令时结束。有关示例,请参见 \fn 部分。
请注意,您也可以使用逗号分隔的列表,用一个 \param 命令记录多个参数。下面是一个示例:
请注意,对于 PHP,还可以指定参数允许的类型(如果用管道符号分隔,则为多个类型),因为这不属于定义的一部分。语法与 phpDocumentor 相同,即:
@param datatype1|datatype2 $paramname description
对于需要单个段落作为参数的命令(例如 \par、\param 和 \warning),\parblock 命令允许开始一个覆盖多个段落的描述,该描述以 \endparblock 结束。
示例
/** Example of a param command with a description consisting of two paragraphs * \param p * \parblock * First paragraph of the param description. * * Second paragraph of the param description. * \endparblock * Rest of the comment block continues. */
请注意,\parblock 命令也可以直接出现在 \param 的第一个参数之后。
这结束了一个由 \parblock 开始的段落块。
启动类或函数模板参数的模板参数描述,参数名为 <template-parameter-name>,后跟模板参数的描述。
否则与 \param 类似。
启动一个段落,可以在其中描述实体的后置条件。该段落将缩进。段落文本没有特殊的内部结构。段落内可以使用所有视觉增强命令。多个相邻的 \post 命令将被合并成一个段落。每个后置条件将从新行开始。或者,一个 \post 命令可以提及多个后置条件。\post 命令在遇到空行或其他节命令时结束。
启动一个段落,可以在其中描述实体的先决条件。该段落将缩进。段落文本没有特殊的内部结构。段落内可以使用所有视觉增强命令。多个相邻的 \pre 命令将被合并成一个段落。每个先决条件将从新行开始。或者,一个 \pre 命令可以提及多个先决条件。\pre 命令在遇到空行或其他节命令时结束。
启动一个段落,可以在其中输入一个或多个备注。该段落将缩进。段落文本没有特殊的内部结构。段落内可以使用所有视觉增强命令。多个相邻的 \remark 命令将被合并成一个段落。每个备注将从新行开始。或者,一个 \remark 命令可以提及多个备注。\remark 命令在遇到空行或其他节命令时结束。
等同于 \remark。
等同于 \return。
启动一个函数返回值描述。段落文本没有特殊的内部结构。段落内可以使用所有视觉增强命令。多个相邻的 \return 命令将被合并成一个段落。\return 描述在遇到空行或其他节命令时结束。有关示例,请参见 \fn 部分。
等同于 \return。
启动一个函数返回值描述,返回值为 <return value>,后跟返回值的描述。形成描述的段落文本没有特殊的内部结构。段落内可以使用所有视觉增强命令。多个相邻的 \retval 命令将被合并成一个段落。每个返回值描述将从新行开始。\retval 描述在遇到空行或其他节命令时结束。
启动一个段落,可以在其中指定一个或多个对类、函数、方法、变量、文件或 URL 的交叉引用。由 :: 或 # 连接的两个名称将被理解为引用类及其成员。可以通过在方法名称后包含一对括号括起来的参数类型列表来选择重载方法或构造函数之一。
等同于 \see。
等同于 \sa。为与 Javadoc 兼容而引入。
等同于 \brief。
此命令可用于指定实体自何时(版本或时间)可用。\since 后的段落没有特殊的内部结构。段落内可以使用所有视觉增强命令。\since 描述在遇到空行或其他节命令时结束。
启动一个段落,可以在其中描述一个或多个测试用例。该段落将缩进。段落文本没有特殊的内部结构。段落内可以使用所有视觉增强命令。多个相邻的 \test 命令将被合并成一个段落。每个测试用例描述将从新行开始。或者,一个 \test 命令可以提及多个测试用例。\test 命令在遇到空行或其他节命令时结束。
描述还将向单独的测试列表添加一个条目,并且描述的两个实例将被交叉引用。测试列表中的每个条目前面都会有一个指示项目来源的标题。
可以通过将 GENERATE_TESTLIST 设置为 NO 来禁用测试列表和相应的条目。
等同于 \exception。
等同于 \throw。
启动一个段落,可以在其中描述一个或多个待办事项。该段落将缩进。段落文本没有特殊的内部结构。段落内可以使用所有视觉增强命令。多个相邻的 \todo 命令将被合并成一个段落。每个待办事项描述将从新行开始。或者,一个 \todo 命令可以提及多个待办事项描述。\todo 命令在遇到空行或其他节命令时结束。
描述还将向单独的待办事项列表添加一个条目,并且描述的两个实例将被交叉引用。待办事项列表中的每个条目前面都会有一个指示项目来源的标题。
可以通过将 GENERATE_TODOLIST 设置为 NO 来禁用待办事项列表和相应的条目。
启动一个段落,可以在其中输入一个或多个版本字符串。该段落将缩进。段落文本没有特殊的内部结构。段落内可以使用所有视觉增强命令。多个相邻的 \version 命令将被合并成一个段落。每个版本描述将从新行开始。或者,一个 \version 命令可以提及多个版本字符串。\version 命令在遇到空行或其他节命令时结束。有关示例,请参见 \author 部分。
启动一个段落,可以在其中输入一个或多个警告消息。该段落将缩进。段落文本没有特殊的内部结构。段落内可以使用所有视觉增强命令。多个相邻的 \warning 命令将被合并成一个段落。每个警告描述将从新行开始。或者,一个 \warning 命令可以提及多个警告。\warning 命令在遇到空行或其他节命令时结束。有关示例,请参见 \author 部分。
此命令是诸如 \todo 和 \bug 等命令的通用化。它可用于创建用户定义的文本部分,这些部分会自动在出现位置和相关页面之间进行交叉引用,相关页面将被生成。在相关页面上,相同类型的所有部分都将被收集起来。
第一个参数 <key> 是一个唯一标识部分类型的标识符。第二个参数是一个带引号的字符串,表示文本(作为第四个参数传递的文本)所在的部分标题。第三个参数(列表标题)用作包含具有相同键的所有项目的相关页面的标题。第二个和第三个字符串参数不能包含换行符。键 "todo"、"test"、"bug" 和 "deprecated" 是预定义的。
为了了解如何使用 \xrefitem 命令及其效果,请考虑待办事项列表,该列表(对于英文输出)可以看作是命令的别名
\xrefitem todo "Todo" "Todo List"
由于为命令的三个参数重复前三个参数非常繁琐且容易出错,因此该命令旨在与配置文件中的 ALIASES 选项结合使用。例如,要定义一个新命令 \reminder,应在配置文件中添加以下行:
ALIASES += "reminder=\xrefitem reminders \"Reminder\" \"Reminders\""
请注意 \xrefitem 命令的第二个和第三个参数使用了转义引号。
如果参数“heading”为空字符串,则不会生成标题。这在使用 \page 命令结合使用时非常有用,例如:
/** @page my_errors My Errors
* @brief Errors page
*
* Errors page contents.
*/
/** \error ERROR 101: in case a file can not be opened.
Check about file system read/write access. */
#define MY_ERR_CANNOT_OPEN_FILE 101
/** \error ERROR 102: in case a file can not be closed.
Check about file system read/write access. */
#define MY_ERR_CANNOT_CLOSE_FILE 102
其中 \error 定义为:
ALIASES += "error=\xrefitem my_errors \"\" \"\""
此命令将 (text) 添加到
、DocBook 和 RTF 索引中。
此命令将一个不可见的、命名的锚点放入文档中,您可以使用 \ref 命令引用它。
在文本和参考文献列表中添加一个参考文献。<label> 必须是有效的 BibTeX 标签,可以在 CITE_BIB_FILES 中列出的 .bib 文件之一中找到。对于
输出,文本中引用的格式可以通过 LATEX_BIB_STYLE 进行配置。对于其他输出格式,使用固定的表示形式。请注意,使用此命令需要 bibtex 工具存在于搜索路径中。
有许多选项可选:
此命令结束一个由 \link 命令开始的链接。
Doxygen 自动生成的链接始终以指向的对象名称作为链接文本。
\link 命令可用于创建指向具有用户指定链接文本的对象(文件、类或成员)的链接。链接命令应以 \endlink 命令结束。\link 和 \endlink 命令之间的所有文本都将作为链接文本,指向 \link 的第一个参数中指定的 <link-object>。
对于 HTML 文档,引用命令将生成指向该节的链接。对于节或子节,该节的标题将用作链接文本。对于锚点,将使用引号之间的可选文本,如果未指定文本,则使用 <name>。
如果 <name> 包含空格(例如,如果它引用文件名包含空格),则需要用双引号括起 <name>,例如 "my file.md"。
对于
文档,引用命令将保持不变,除非将 PDF_HYPERLINKS 选项设置为 NO,在这种情况下,它将为节生成节标题,或如果 <name> 指向锚点,则生成文本,后跟页码。
\ref 命令的示例,请参见 \page 部分。与 \ref 命令一样,此命令创建指向命名节的引用,但此引用会出现在一个列表中,该列表由 \secreflist 开始,以 \endsecreflist 结束。此类列表的示例可以在 页面顶部 看到。
创建一个需求引用,并带有可选的简短描述作为链接文本。包含此类引用的函数、类或其他符号被认为有助于满足需求。注释可以包含指向不同需求的多个 satisfies 引用。一个需求也可以有多个贡献者,在这种情况下,应在每个贡献方的文档中提及 satisfies 命令。
创建一个需求引用,并带有可选的简短描述作为链接文本。包含此类引用的函数、类或其他符号被认为有助于测试/验证需求。注释可以包含指向不同需求的多个 verifies 引用。一个需求也可以有多个测试/验证贡献者,在这种情况下,应在每个贡献方的文档中提及 verifies 命令。
开始一个由 \refitem 创建的条目索引列表,每个条目都链接到一个命名节。
结束由 \secreflist 开始的索引列表。
此命令可用于创建页面层次结构。可以使用 \defgroup 和 \ingroup 命令创建相同的结构,但对于页面,\subpage 命令通常更方便。主页面(参见 \mainpage)通常是层次结构的根。
此命令的行为与 \ref 类似,它创建一个指向标记为 <name> 的页面的引用,并带有第二个参数中指定的可选链接文本。
它与 \ref 命令不同之处在于,它仅适用于页面,并创建页面之间的父子关系,其中子页面(或子页面)由标签 <name> 标识。
如果您想在不创建多个页面的情况下添加结构,请参见 \section 和 \subsection 命令。
这是一个例子
/*! \mainpage A simple manual Some general info. This manual is divided in the following sections: - \subpage intro - \subpage advanced "Advanced usage" */ //----------------------------------------------------------- /*! \page intro Introduction This page introduces the user to the topic. Now you can proceed to the \ref advanced "advanced section". */ //----------------------------------------------------------- /*! \page advanced Advanced Usage This page is for advanced users. Make sure you have first read \ref intro "the introduction". */
在页面顶部创建一个目录,列出页面中的所有节和子节。option 可以是 HTML、LaTeX、XML 或 DocBook。当指定 level 时,表示显示的最大嵌套级别。level 的值应在 1 到 6 之间,超出此范围的值被视为 6。如果没有指定 level,则 level 设置为 6(显示全部)。如果没有指定 option,则 \tableofcontents 的作用如同仅指定了 option HTML 和 XML。如果有多个 \tableofcontents 命令在同一页面上,则 option(s) 将附加到已指定的 option(s) 上,但只有最后一个 level 对于 option 有效。
创建一个名为 <section-name> 的节。节的标题应作为 \section 命令的第二个参数指定。
\section 命令的示例,请参见 \page 部分。 创建一个名为 <subsection-name> 的子节。子节的标题应作为 \subsection 命令的第二个参数指定。
\subsection 命令的示例,请参见 \page 部分。 创建一个名为 <subsubsection-name> 的子子节。子子节的标题应作为 \subsubsection 命令的第二个参数指定。
\section 命令和 \subsection 命令的示例,请参见 \page 部分。 创建一个名为 <paragraph-name> 的命名段落。段落的标题应作为 \paragraph 命令的第二个参数指定。
创建一个名为 <subparagraph-name> 的命名子段落。子段落的标题应作为 \subparagraph 命令的第二个参数指定。
创建一个名为 <subsubparagraph-name> 的命名次级子段落。次级子段落的标题应作为 \subsubparagraph 命令的第二个参数指定。
此命令可用于解析源文件,而无需将其实际逐字包含在文档中(正如 \include 命令所做的那样)。如果您想将源文件分成更小的部分并在这些部分之间添加文档,这将非常有用。可以使用 Doxygen 配置文件的 EXAMPLE_PATH 标签来指定源文件或目录。
您可以添加 lineno 选项来为包含的代码启用行号(如果需要)。
您可以添加 strip 选项,该选项将始终隐藏包含代码中的任何特殊注释,从而覆盖 STRIP_CODE_COMMENTS 设置,或者添加 nostrip 选项以始终显示特殊注释。
代码片段中的类和成员声明和定义在包含 \dontinclude 命令的注释块的解析过程中被“记住”。
对于源文件的逐行描述,可以使用 \line、\skip、\skipline 和 \until 命令显示示例的一行或多行。这些命令使用内部指针。\dontinclude 命令将指针设置到示例的第一行。
include_test.cpp 如下所示:此命令可用于将源文件包含为代码块。该命令以包含文件的名称作为参数。源文件或目录可以使用 Doxygen 配置文件中的 EXAMPLE_PATH 标签进行指定。
如果 <file-name> 本身对于 EXAMPLE_PATH 标签指定的示例文件集不是唯一的,则可以包含绝对路径的一部分以消歧义。
使用 \include 命令等同于将文件插入文档块并用 \code 和 \endcode 命令将其括起来。
\include 命令的主要目的是避免代码重复,尤其是在由多个源文件和头文件组成的示例块中。
要逐行描述源文件,请结合使用 \dontinclude 命令以及 \line、\skip、\skipline 和 \until 命令。
或者,可以使用 \snippet 命令仅包含源文件的一部分。要实现此功能,必须标记该片段。
该 option 可以是 lineno 或 doc,此外还可以指定 local。
使用 option doc 时,还有一个 raise 选项可以指定,以在某个量上提升引用文件中找到的所有部分。例如
\include{doc,raise=1} file.dox
会将 file.dox 中找到的任何级别 1 \section 视为级别 2 \subsection,并将任何级别 2 \subsection 视为级别 3 \subsubsection,依此类推。同样,对于 Markdown,# 部分将被视为 ## 部分。
此外,还有一个 prefix 选项,可用于为包含的部分的每个标签添加前缀,以保持其唯一性。例如
\include{doc,prefix=fn_} file.dox
会将 file.dox 中找到的例如 \section s1 视为好像指定为 \section fn_s1。
此命令已弃用,但为保持向后兼容性仍然支持,其工作方式与 \include{lineno} 相同。
此命令已弃用,但为保持向后兼容性仍然支持,其工作方式与 \include{doc} 相同。
该 option 与使用 doc 选项时的 \include 命令可用的 option 相同。
此命令逐行搜索最后通过 \include 或 \dontinclude 包含的示例,直到找到非空行。如果该行包含指定的模式,则将其写入输出。
用于跟踪示例中当前行的内部指针将设置为找到的非空行的下一行的开头(如果找不到这样的行,则设置为示例的末尾)。
请参阅 \dontinclude 部分以获取示例。
此命令逐行搜索最后通过 \include 或 \dontinclude 包含的示例,直到找到包含指定模式的行。
用于跟踪示例中当前行的内部指针将设置为包含该模式的行的开头(如果找不到模式,则设置为示例的末尾)。
请参阅 \dontinclude 部分以获取示例。
此命令逐行搜索最后通过 \include 或 \dontinclude 包含的示例,直到找到包含指定模式的行。然后将该行写入输出。
用于跟踪示例中当前行的内部指针将设置为写入行的下一行的开头(如果找不到模式,则设置为示例的末尾)。
\skipline pattern等同于
\skip pattern \line pattern
请参阅 \dontinclude 部分以获取示例。
其中,\include 命令可用于将整个文件作为源代码包含,而此命令可用于仅引用源文件的一部分。如果 this 用作 <file-name>,则当前文件将被视为要从中提取代码片段的文件。
例如,在文档中放置以下命令将引用位于子目录中的文件 example.cpp 的代码片段,该子目录应通过 EXAMPLE_PATH 指定。
\snippet snippets/example.cpp Adding a resource
文件名后面的文本是代码片段的唯一标识符。这用于分隔相关代码片段文件中的引用代码,如下面的示例所示,该示例对应于上面的 \snippet 命令
请注意,包含块标记的行不会被包含,因此输出将是
另请注意,[block_id] 标记在源文件中应恰好出现两次。
该 option 可以是 lineno、trimleft 或 doc,此外还可以指定 local。
使用 option doc 时,还有一个 raise 选项可以指定,以在某个量上提升引用文件中找到的所有部分。例如
\snippet{doc,raise=1} file.dox XXX
会将代码片段中找到的任何级别 1 \section 视为级别 2 \subsection,并将任何级别 2 \subsection 视为级别 3 \subsubsection,依此类推。同样,对于 Markdown,# 部分将被视为 ## 部分。
此外,还有一个 prefix 选项,可用于为包含的部分的每个标签添加前缀,以保持其唯一性。例如
\include{doc,prefix=fn_} file.dox
会将 file.dox 中找到的例如 \section s1 视为好像指定为 \section fn_s1。
请参阅 \dontinclude 部分,了解包含源文件片段的另一种方式,该方式不需要标记。
此命令已弃用,但为保持向后兼容性仍然支持,其工作方式与 \snippet{lineno} 相同。
此命令已弃用,但为保持向后兼容性仍然支持,其工作方式与 \snippet{doc} 相同。
该 option 与使用 doc 选项时的 \snippet 命令可用的 option 相同。
此命令将最后通过 \include 或 \dontinclude 包含的示例的所有行写入输出,直到找到包含指定模式的行。包含该模式的行也将被写入。
用于跟踪示例中当前行的内部指针将设置为最后写入行的下一行的开头(如果找不到模式,则设置为示例的末尾)。
请参阅 \dontinclude 部分以获取示例。
此命令将文件 <file-name> 的内容 verbatim 包含在文档中。该命令等同于将文件的内容粘贴到文档中,并将其放在 \verbatim 和 \endverbatim 命令之间。
Doxygen 应查找的文件或目录可以使用 Doxygen 配置文件中的 EXAMPLE_PATH 标签进行指定。
此命令将文件 <file-name> 的内容原样包含在 HTML 文档中,并在生成的 XML 输出中标记为 <htmlonly>。该命令等同于将文件的内容粘贴到文档中,并将其放在 \htmlonly 和 \endhtmlonly 命令之间。
通常,由 \htmlinclude 指定的文件内容会原样插入。当您要插入一个具有块作用域的 HTML 片段(如表格或列表),它应该出现在 <p>..</p> 之外时,这可能导致无效的 HTML。您可以使用 \htmlinclude[block] 使 Doxygen 结束当前段落并在文件包含后重新开始。
Doxygen 应查找的文件或目录可以使用 Doxygen 配置文件中的 EXAMPLE_PATH 标签进行指定。
此命令将文件 <file-name> 的内容原样包含在
文档中,并在生成的 XML 输出中标记为 <latexonly>。该命令等同于将文件的内容粘贴到文档中,并将其放在 \latexonly 和 \endlatexonly 命令之间。
Doxygen 应查找的文件或目录可以使用 Doxygen 配置文件中的 EXAMPLE_PATH 标签进行指定。
此命令将文件 <file-name> 的内容原样包含在 RTF 文档中,并在生成的 XML 输出中标记为 <rtfonly>。该命令等同于将文件的内容粘贴到文档中,并将其放在 \rtfonly 和 \endrtfonly 命令之间。
Doxygen 应查找的文件或目录可以使用 Doxygen 配置文件中的 EXAMPLE_PATH 标签进行指定。
此命令将文件 <file-name> 的内容原样包含在 MAN 文档中,并在生成的 XML 输出中标记为 <manonly>。该命令等同于将文件的内容粘贴到文档中,并将其放在 \manonly 和 \endmanonly 命令之间。
Doxygen 应查找的文件或目录可以使用 Doxygen 配置文件中的 EXAMPLE_PATH 标签进行指定。
此命令将文件 <file-name> 的内容原样包含在 DocBook 文档中,并在生成的 XML 输出中标记为 <docbookonly>。该命令等同于将文件的内容粘贴到文档中,并将其放在 \docbookonly 和 \enddocbookonly 命令之间。
Doxygen 应查找的文件或目录可以使用 Doxygen 配置文件中的 EXAMPLE_PATH 标签进行指定。
此命令将文件 <file-name> 的内容原样包含在 XML 文档中。该命令等同于将文件的内容粘贴到文档中,并将其放在 \xmlonly 和 \endxmlonly 命令之间。
Doxygen 应查找的文件或目录可以使用 Doxygen 配置文件中的 EXAMPLE_PATH 标签进行指定。
以斜体显示参数 <word>。使用此命令来强调单词。使用此命令在正文中引用成员参数。
... the \a x and \a y coordinates are used to ...这将产生以下文本
等同于 \e 和 \em。要强调多个单词,请使用 <em>多个单词</em>。
此命令有一个参数,该参数一直持续到第一个空白行或直到遇到另一个 \arg。该命令可用于生成简单、非嵌套的参数列表。每个参数都应以 \arg 命令开头。
\arg \c AlignLeft left alignment. \arg \c AlignCenter center alignment. \arg \c AlignRight right alignment No other types of alignment are supported.将产生以下文本
AlignLeft 左对齐。AlignCenter 居中对齐。AlignRight 右对齐等同于 \li
以粗体显示参数 <word>。等同于 <b>word</b>。要将多个单词设为粗体,请使用 <b>多个单词</b>。
使用打字机字体显示参数 <word>。使用此命令来引用代码单词。等同于 <tt>word</tt>。
... This function returns \c void and not \c int ...将产生以下文本
void 而不是 int ...等同于 \p。要将多个单词设置为打字机字体,请使用 <tt>多个单词</tt>。
开始一个代码块。代码块的处理方式与普通文本不同。它被解释为源代码。类和成员以及其他已记录实体的名称会自动替换为指向文档的链接。
默认情况下,用于语法高亮的语言基于 \code 块的出现位置。例如,如果这是 Python 文件的一部分,则语法高亮将根据 Python 语法进行。
如果根据上下文不清楚意图的语言(例如,注释在 .txt 或 .markdown 文件中),您还可以通过在代码块之后以花括号形式放置 Doxygen 通常与该语言关联的文件扩展名来显式指定语言。这是一个例子
\code{.py}
class Python:
pass
\endcode
\code{.cpp}
class Cpp {};
\endcode
如果代码块的内容是 Doxygen 无法解析的语言,Doxygen 将仅按原样显示输出。您可以使用 .unparsed 来显式设置,或者提供 Doxygen 不支持的其他扩展名,例如
\code{.unparsed}
Show this as-is please
\endcode
\code{.sh}
echo "This is a shell script"
\endcode
从由 <link-object> 指定的对象复制文档块,并将其粘贴到命令的位置。此命令可用于避免必须重复文档块的情况,或者可用于扩展继承成员的文档。
链接对象可以指向成员(类、文件或组的成员)、类、命名空间、组、页面或文件(按此顺序检查)。请注意,如果指向的对象是成员(函数、变量、typedef 等),则包含它的复合对象(类、文件或组)也必须已记录才能使复制生效。
例如,要复制类的成员文档,可以在文档中放置以下内容
/*! @copydoc MyClass::myfunction() * More documentation. */
如果成员被重载,则应显式指定参数类型(不带空格!),如下所示
//! @copydoc MyClass::myfunction(type1,type2)
仅当文档块出现的上下文需要时,才需要限定名称。
\copydoc 命令可以递归使用,但 \copydoc 关系中的循环将被打破并标记为错误。
请注意,\copydoc foo() 大致等同于执行
\brief \copybrief foo() \details \copydetails foo()
请参阅 \copybrief 和 \copydetails 来仅复制评论块的简要或详细部分。
的工作方式与 \copydoc 类似,但仅复制简要描述,不复制详细文档。
的工作方式与 \copydoc 类似,但仅复制详细文档,不复制简要描述。
开始一个文本块,该文本块将仅 verbatim 包含在生成的 DocBook 文档中,并在生成的 XML 输出中标记为 <docbookonly>。该块以 \enddocbookonly 命令结束。
开始一个应包含有效点图描述的文本片段。文本片段以 \enddot 结尾。Doxygen 将文本传递给 dot 并将生成的图像(和图像映射)包含在输出中。
第一个参数是可选的,可用于指定图像下方显示的标题。此参数必须用引号括起来,即使它不包含任何空格。引号会在显示标题之前被删除。
第二个参数也是可选的,可用于指定图像的宽度或高度。有关可能性,请参阅 \image 命令中关于 Size indication 的段落。
可以使用 URL 属性使图的节点可点击。通过在 URL 值中使用 \ref 命令,您可以方便地链接到 Doxygen 中的项。这是一个例子
YES此命令将根据其名称生成一个表情符号字符。
支持的名称是 GitHub 也支持的名称,在此列出 https://gist.github.com/rxaviers/7360908
您可以使用带冒号或不带冒号的名称,即 \emoji smile 与 \emoji :smile: 相同。当表情符号不受支持时,名称会以冒号分隔的形式显示在文本中,即 \emoji unsupported 将在输出中显示为 :unsupported:。Doxygen 也会发出警告消息。
有关详细信息,请参阅 Emoji support page。
开始一个应包含有效消息序列图描述的文本片段。有关示例,请参阅 https://www.mcternan.me.uk/mscgen/。文本片段以 \endmsc 结尾。
第一个参数是可选的,可用于指定图像下方显示的标题。此参数必须用引号括起来,即使它不包含任何空格。引号会在显示标题之前被删除。
第二个参数也是可选的,可用于指定图像的宽度或高度。有关可能性,请参阅 \image 命令中关于 Size indication 的段落。
msc {...} 块内的部分(这与 \mscfile 不同)。以下是 \msc 命令用法示例。
开始一个应包含有效 PlantUML 图的文本片段。有关示例,请参阅 https://plantuml.com/。文本片段以 \enduml 结尾。
并非所有图都可以使用 PlantUML 的 @startuml 命令创建,有些需要其他 PlantUML @start... 命令。这将显示为 @start<engine>,目前支持的 <engine> 包括:uml、bpm、wire、dot、ditaa、salt、math、latex、gantt、mindmap、wbs、yaml、creole、json、flow、board、git、hcl、regex、ebnf、files、chen 和 chronology。默认情况下,<engine> 是 uml。<engine> 可以作为选项指定。也可以通过选项指定要将生成的图像写入的文件,有关详细信息,请参阅第一个(可选)参数的说明。当然,只能指定一个 <engine>,并且文件名也只能指定一次。
第一个参数是可选的,用于与将 PlantUML 作为预处理步骤在运行 Doxygen 之前兼容,您也可以在 \startuml 之后并在花括号内作为选项添加图像文件名,即
@startuml{myimage.png} "Image Caption" width=5cm
Alice -> Bob : Hello
@enduml
当指定图像名称时,Doxygen 将生成一个具有该名称的图像。如果不指定名称,Doxygen 将自动选择一个名称。
第二个参数是可选的,可用于指定图像下方显示的标题。此参数必须用引号括起来,即使它不包含任何空格。引号会在显示标题之前被删除。
第三个参数也是可选的,可用于指定图像的宽度或高度。有关可能性,请参阅 \image 命令中关于 Size indication 的段落。
ALIASES += startjson=@startuml{json}
ALIASES += endjson=@enduml
以下是 \startuml 命令用法示例。
第一个参数指定图像的文件名。Doxygen 将在您在 DOTFILE_DIRS 标签后指定的路径(或文件)中查找文件。如果找到 dot 文件,它将被用作 dot 工具的输入文件。生成的图像将放在正确的输出目录中。如果 dot 文件名包含空格,您必须用引号 ("...") 将其括起来。
第二个参数是可选的,可用于指定图像下方显示的标题。此参数必须用引号括起来,即使它不包含任何空格。引号会在显示标题之前被删除。
第三个参数也是可选的,可用于指定图像的宽度或高度。有关可能性,请参阅 \image 命令中关于 Size indication 的段落。
YES从 <file> 中生成的 mscgen 图像插入到文档中。有关示例,请参阅 https://www.mcternan.me.uk/mscgen/。
第一个参数指定图像的文件名。Doxygen 将在您在 MSCFILE_DIRS 标签后指定的路径(或文件)中查找文件。如果找到 msc 文件,它将被用作内置 mscgen 工具的输入文件。生成的图像将放在正确的输出目录中。如果 msc 文件名包含空格,您必须用引号 ("...") 将其括起来。
第二个参数是可选的,可用于指定图像下方显示的标题。此参数必须用引号括起来,即使它不包含任何空格。引号会在显示标题之前被删除。
第三个参数也是可选的,可用于指定图像的宽度或高度。有关可能性,请参阅 \image 命令中关于 Size indication 的段落。
第一个参数指定图像的文件名。Doxygen 将在您在 DIAFILE_DIRS 标签后指定的路径(或文件)中查找文件。如果找到 dia 文件,它将被用作 dia 的输入文件。生成的图像将放在正确的输出目录中。如果 dia 文件名包含空格,您必须用引号 ("...") 将其括起来。
第二个参数是可选的,可用于指定图像下方显示的标题。此参数必须用引号括起来,即使它不包含任何空格。引号会在显示标题之前被删除。
第三个参数也是可选的,可用于指定图像的宽度或高度。有关可能性,请参阅 \image 命令中关于 Size indication 的段落。
显示 Doxygen 配置文件中使用的配置选项 <config_option> 的值,该配置文件在处理此命令时正在使用中。
... Project name = \doxyconfig PROJECT_NAME ...得到
... this is a \e really good example ...将产生以下文本
相当于 \a 和 \em。要强调多个单词,请使用 <em>multiple words</em>。
... this is a \em really good example ...将产生以下文本
相当于 \a 和 \e。要强调多个单词,请使用 <em>multiple words</em>。
结束一个由 \docbookonly 命令开始的文本块。
结束一个由 \dot 开始的块。
结束一个由 \msc 开始的块。
结束一个由 \startuml 开始的块。
将 PlantUml 中制作的图像从 <file> 插入到文档中。
第一个参数指定图像的文件名。Doxygen 将在您在 PLANTUMLFILE_DIRS 标签后指定的路径(或文件)中查找文件。如果找到 plantuml 文件,它将被用作 plantuml 程序的输入文件。生成的图像将放在正确的输出目录中。如果 plantuml 文件名包含空格,您必须用引号 ("...") 将其括起来。
第二个参数是可选的,可用于指定图像下方显示的标题。此参数必须用引号括起来,即使它不包含任何空格。引号会在显示标题之前被删除。
第三个参数也是可选的,可用于指定图像的宽度或高度。有关可能性,请参阅 \image 命令中关于 Size indication 的段落。
结束一个由 \htmlonly 命令开始的文本块。
结束一个由 \latexonly 命令开始的文本块。
结束一个由 \manonly 命令开始的文本块。
结束一个由 \rtfonly 命令开始的文本块。
结束一个由 \verbatim 命令开始的文本块。
结束一个由 \xmlonly 命令开始的文本块。
标记文本内公式的开始和结束。
标记文本内公式的开始,但与 \f$ 不同,它不会显式打开
中的数学模式。
标记由 \f( 开始的文本内公式的结束。
标记一个长公式的开始,该公式将在单独的行上居中显示。
标记一个将在单独的行上居中显示的数学公式的结束。
标记一个属于特定环境的数学公式的开始。
{ 是可选的,仅用于帮助编辑器(如 Vim)进行正确的语法高亮,方法是使大括号的数量相等。标记一个属于特定环境的数学公式的结束。
开始一个文本块,该文本块仅会原样包含在生成的 HTML 文档中,并在生成的 XML 输出中标记为 <htmlonly>。该块以 \endhtmlonly 命令结束。
此命令可用于包含 Doxygen 无法处理的过于复杂的 HTML 代码(例如,applets、java-scripts 和需要特定属性的 HTML 标签)。
通常,\htmlonly 和 \endhtmlonly 之间的内容会按原样插入。当您要插入具有块级作用域的 HTML 片段(如表格或列表,应出现在 <p>..</p> 外部)时,这可能导致无效的 HTML。您可以使用 \htmlonly[block] 让 Doxygen 结束当前段落并在 \endhtmlonly 之后重新开始。
将图像插入文档中。此命令特定于格式,因此如果要为多种格式插入图像,则必须为每种格式重复此命令。
第一个参数指定应嵌入图像的输出格式。当前支持以下值:html、latex、docbook、rtf 和 xml。
第二个参数指定图像的文件名。Doxygen 将在您在 IMAGE_PATH 标签后指定的路径(或文件)中查找文件。如果找到图像,它将被复制到正确的输出目录中。如果图像名称包含空格,您必须用引号 ("...") 将其括起来。您也可以指定一个绝对 URL 而不是文件名,但那样 Doxygen 不会复制图像也不会检查其是否存在。
第三个参数是可选的,可用于指定图像下方的标题。此参数必须在一行中指定,并用引号括起来,即使它不包含任何空格。在显示标题之前,引号会被剥离。
第四个参数也是可选的,可用于指定图像的宽度或高度。这对于
或 DocBook 输出(即 format=latex 或 format=docbook)很有用。
sizeindication 可以指定要使用的宽度或高度(或两者的组合)。目前只支持 inline 和 anchor 选项。如果指定了 inline 选项,图像将“内嵌”放置,如果存在标题,它将显示为 HTML 中的工具提示(其他格式将忽略)。对于 anchor 选项,语法是:anchor:<anchorId>。
这是注释块的一个示例
/*! Here is a snapshot of my new application: * \image html application.jpg * \image latex application.eps "My application" width=10cm */
这是相关配置文件部分外观的示例
IMAGE_PATH = my_image_dir
开始一个文本块,该文本块仅会原样包含在生成的
文档中,并在生成的 XML 输出中标记为 <latexonly>。该块以 \endlatexonly 命令结束。
此命令可用于包含 Doxygen 无法处理的过于复杂的
代码(例如,图像、公式、特殊字符)。您可以使用 \htmlonly 和 \endhtmlonly 对提供适当的 HTML 替代方案。
注意: 环境(如 $(HOME) )将在
-only 块内解析。
开始一个文本块,该文本块仅会原样包含在生成的 MAN 文档中,并在生成的 XML 输出中标记为 <manonly>。该块以 \endmanonly 命令结束。
此命令可用于将 groff 代码直接包含到 MAN 页面中。您可以使用 \htmlonly 和 \endhtmlonly 以及 \latexonly 和 \endlatexonly 对来提供适当的 HTML 和
替代方案。
此命令有一个参数,该参数一直持续到第一个空行或直到遇到另一个 \li。该命令可用于生成一个简单的、非嵌套的参数列表。每个参数都应以 \li 命令开头。
\li \c AlignLeft left alignment. \li \c AlignCenter center alignment. \li \c AlignRight right alignment No other types of alignment are supported.将产生以下文本
AlignLeft 左对齐。AlignCenter 居中对齐。AlignRight 右对齐相当于 \arg
强制换行。相当于 <br>,灵感来自 printf 函数。
使用打字机字体显示参数 <word>。您可以使用此命令在正文中引用成员函数参数。
... the \p x and \p y coordinates are used to ...这将产生以下文本
x 和 y 坐标用于 ...相当于 \c。要获得多个打字机字体单词,请使用 <tt>multiple words</tt>。
开始一个文本块,该文本块仅会原样包含在生成的 RTF 文档中,并在生成的 XML 输出中标记为 <rtfonly>。该块以 \endrtfonly 命令结束。
此命令可用于包含 Doxygen 无法处理的 RTF 代码。
注意: 环境(如 $(HOME) )将在 RTF-only 块内解析。
开始一个将原样包含在文档中的文本块。该块应以 \endverbatim 命令结束。所有命令在 verbatim 块中都禁用。
\verbatim 命令包含一个 \endverbatim 命令,否则解析器会混淆!开始一个仅会原样包含在生成的 XML 输出中的文本块。该块以 \endxmlonly 命令结束。
此命令可用于包含自定义 XML 标签。
此命令向输出写入一个反斜杠字符 (\)。在某些情况下,反斜杠必须转义,因为 Doxygen 使用它来检测命令。
此命令向输出写入一个 at 符号 (@)。在某些情况下,at 符号必须转义,因为 Doxygen 使用它来检测 Javadoc 命令。
此命令启用/禁用特定语言的过滤器。这可用于将不同语言的文档放入同一个注释块中,并使用 OUTPUT_LANGUAGE 标签仅过滤掉特定语言。使用 \~language_id 仅启用特定语言的输出,使用 \~ 启用所有语言的输出(这也是默认模式)。
示例
/*! \~english This is English \~dutch Dit is Nederlands \~german Dies ist
Deutsch. \~ output for all languages.
*/
此命令向输出写入 & 字符。此字符必须转义,因为它在 HTML 中具有特殊含义。
此命令向输出写入 $ 字符。在某些情况下,此字符必须转义,因为它用于展开环境变量。
此命令向输出写入 # 字符。在某些情况下,此字符必须转义,因为它用于引用已记录的实体。
此命令向输出写入 < 字符。此字符必须转义,因为它在 HTML 中具有特殊含义。
此命令向输出写入 > 字符。此字符必须转义,因为它在 HTML 中具有特殊含义。
此命令向输出写入 % 字符。在某些情况下,此字符必须转义,因为它用于防止自动链接到也是已记录类或结构的单词。
此命令向输出写入 " 字符。在某些情况下,此字符必须转义,因为它成对使用以指示未格式化的文本片段。
此命令向输出写入一个点 (.)。当启用 JAVADOC_AUTOBRIEF 或 QT_AUTOBRIEF 时,这可能有助于防止结束简短描述,或者在行首的点后跟数字时,可以防止启动编号列表。
此命令向输出写入一个问号 (?)。当启用 JAVADOC_AUTOBRIEF 或 QT_AUTOBRIEF 时,这可能有助于防止结束简短描述。
此命令向输出写入一个感叹号 (!)。当启用 JAVADOC_AUTOBRIEF 或 QT_AUTOBRIEF 时,这可能有助于防止结束简短描述。
此命令向输出写入一个等号 (=)。在某些情况下,此字符序列必须转义,因为它在 Markdown 标题处理中使用。
此命令向输出写入一个双冒号 (::)。在某些情况下,此字符序列必须转义,因为它用于引用已记录的实体。
此命令向输出写入一个管道符号 (|)。在某些情况下,此字符必须转义,因为它用于 Markdown 表格。
此命令向输出写入两个连字符 (--)。这允许在输出中写入两个连续的连字符,而不是一个 n-dash 字符 (–)。
此命令向输出写入三个连字符 (---)。这允许在输出中写入三个连续的连字符,而不是一个 m-dash 字符 (—)。