时间:2016年8月9日 天气:大雨:umbrella:
Author:冬之晓:dizzy_face:
Email: 347916416@qq.com
MyAppearance:
今天早晨,起来晚了,冲出宿舍。就往公司走,可是半路突然下起大暴雨,到公 司全身湿透!终于明白余姚的天气实在太多变了,以后一定要天天带伞。 今天下午,江威确定要走了,哎,当初说一起过来,没想到就剩下我一个人了,算了,其他我也不想说啥了……
Doxygen
的特殊命令字
Doxygen
在进行注释的时候,有很多以@
或者\
开头后面加上一个特殊命令的字段,然后就可以在生成文档的时候有特殊的作用,我一般喜欢用@
,所以后面的命令都使用这个标签,下面我来介绍一下。
结构类的表达
- @addtogroup
[(title)]
使用@defgroup
同样可以定义一个组,但是相比之下,多次使用相同<name>
的@addtogroup
命令并不会出现警告,而它是一个将命令中附带的title
与文档进行合并的组。
title
是可选的,所以该命令可以使用@{
和@}
添加一定数量的实体到一个已存在的组里。例如:
/*! \addtogroup mygrp
* Additional documentation for group 'mygrp'
* @{
*/
/*!
* A function
*/
void func1()
{
}
/*! Another function */
void func2()
{
}
/*! @} */
- @callgraph
当该命令放置到一个函数或方法的注释块中,且HAVE_DOT
设为YES,doxygen
将创建一个调用图。
- @callergraph
当该命令放置到一个函数或方法的注释块中,且HAVE_DOT
设为YES,doxygen
将创建一个调用者图。
- @hidecallgraph
当该命令放置到一个函数或方法的注释块中,且HAVE_DOT
设为YES,doxygen
将不创建一个调用图。
- @hidecallergraph
当该命令放置到一个函数或方法的注释块中,且HAVE_DOT
设为YES,doxygen
将不创建一个调用者图。
- @category
[ ] [ ]
只适用于Object-C
:为一个名为<name>
的类指定一个文档注释块,此命令参数应与@class
相同
- @class
[ ] [ ]
为一个名字为<name>
类指定一个文档注释块,可选择指定的一个头文件和一个头名称。如果指定了一个头文件,在HTML文档中将包含一个指向次头文件的完全副本的链接。<header-name>
参数可用于覆盖<header-file>
之外的类文档中所使用链接名称,如果在默认包含路径中无法定位包含文件(如<X11/X.h>)时,
/* A dummy class */
class Test
{
};
/*! \class Test class.h "inc/class.h"
* \brief This is a test class.
*
* Some details about the Test class.
*/
- @def
用于定义一个#define的注释,例如:
/*! \file define.h
\brief testing defines
This is to test the documentation of defines.
*/
/*! \def MAX(x,y)
Computes the maximum of \a x and \a y.
*/
/*!
Computes the absolute value of its argument \a x.
*/
#define ABS(x) (((x)>0)?(x):-(x))
#define MAX(x,y) ((x)>(y)?(x):(y))
#define MIN(x,y) ((x)>(y)?(y):(x))
/*!< Computes the minimum of \a x and \a y. */
- @defgroup
(group title)
为类、文件或命名空间的组,指定一个文档注释块,可以用于类、文件、命名空间和文档的其他类别进行归类,也可以将组作为其他组的成员,这样就可以创建一个组的层次。
- @dir [
]
为一个目录指定一个文档注释块,path fragment
参数应包含一个路径名和一个与项目中其他路径不一样的唯一一个全路径(The “path fragment” argument should include the directory name and enough of the path to be unique with respect to the other directories in the project.)
- enum
为一个名字为<name>
的枚举类型指定一个文档注释块,如果此枚举是类中的一个成员,且文档块处于类定义之外,类的作用于同样需要指定。如果一个注释块位于枚举声明之前,那么@enum
注释可能被省略。
注意:一个无名的枚举类型将不能被文档化,但一个无名的枚举值是可以使用的。
例如:
class Enum_Test
{
public:
enum TEnum { Val1, Val2 };
/*! Another enum, with inline docs */
enum AnotherEnum
{
V1, /*!< value 1 */
V2 /*!< value 2 */
};
};
/*! \class Enum_Test
* The class description.
*/
/*! @enum Enum_Test::TEnum
* A description of the enum type.
*/
/*! @var Enum_Test::TEnum Enum_Test::Val1
* The description of the first enum value.
*/
- @example
为一个源码的例子指定一个文档注释块,<file-name>
是源码文件名,在注释块包含的文档之后,将包含此文件的文本。所有的例子将被放入一个列表中,为了已文档化的成员和类,与文档之间的交叉引用,将对源码进行扫描,源文件或目录将在doxygen
的配置文件中使用EXAMPLE_PATH
标记指定。
如果<file-name>
也就是在EXAMPLE_PATH
标记指定的例子文件名,并非是唯一的,你需要包含它的绝对路径,以消除它的二义性。
如果例子中需要多个源文件,可以使用@include
命令,例如:
/** A Example_Test class.
* More details about this class.
*/
class Example_Test
{
public:
/** An example member function.
* More details about this function.
*/
void example();
};
void Example_Test::example() {}
/** @example example_test.cpp
* This is an example of how to use the Example_Test class.
* More details about this example.
*/
下面是例子文件example_test.cpp
void main()
{
Example_Test t;
t.example();
}
- @endinternal
这个命令结束一个以@internal
开头的文档块。只要当INTERNAL_DOCS
设置为YES时在@internal
和@endinternal
之间的文档才可见。
- @extends
当编程语言不支持这个特性时,比如C语言,就用这个命令手动指定一个继承关系,。
在例子目录中manual.c
文件将显示如何使用这个命令。
- @file [
]
为一个名字为<name>
的源文件或者头文件,指定一个文档注释块。如果文件名本身并不是唯一的,那么这个文件名可能包含(部分包含)了它的路径,如果该文件名被省略(如@file后留空),那么包含@file
命令的文档块将属于它已定位到的那个文件。
要点:全局函数,变量,类型转换,枚举的文档只能包含在输出中,并且他们也已被文档化。
例子:
/** @file file.h
* A brief file description.
* A more elaborated file description.
*/
/**
* A global integer value.
* More details about this value.
*/
extern int globalValue;
注意:上面的例子中JAVADOC_AUTOBRIEF
已经设置为YES
- @fn (function declaration)
为一个函数(全局函数或者类的成员函数)指定一个文档注释块,此命令只有在一个注释块没有放到函数声明前面或者后面时才需要。
如果注释块放到了函数声明的前面或者后面,此命令可省略(为了避免重复)。
警告:在此命名并非绝对需要时不要使用,否则将导致信息重复的错误。
class Fn_Test
{
public:
const char *member(char,int) throw(std::out_of_range);
};
const char *Fn_Test::member(char c,int n) throw(std::out_of_range) {}
/*! @class Fn_Test
* @brief Fn_Test class.
*
* Details about Fn_Test.
*/
/*! @fn const char *Fn_Test::member(char c,int n)
* @brief A member function.
* @param c a character.
* @param n an integer.
* @exception std::out_of_range parameter is out of range.
* @return a character pointer.
*/
今天暂时到这,明天继续学习Doxygen
的特殊命令字。