赞
踩
对于任何一行代码来说,会有两种(也可能是三种)注释方式,并且会一同放置到文档中,-种是简明描述,另一种是细节描述,这两种方式都是可选的。而方法和函数也可能使用第三种描述的方式,它被称为\“inbody\”描述,并包含方法和函数内所有注释块之间的联系。
多于一个的简明或者细节描述是能被接受的(不推荐,将会无法判定描述的顺序)。
建议简明描述使用一.个短小的单行方式,而细节描述要提供足够的长度以包容更多的细节文档。一个\ "inbody“ \ 描述可看成一个细节描述,或者是执行细节的集合。以HTML方式输出的简明描述可在文档行引用之处支持冒泡提示For the HTML output brief descriptions are also use to provide tooltips at places where an item is
referenced
C注释风格
/**
* ...text...
* /
C++ 注释风格
///
/// ...text...
///
//!
//! ...text...
//!
我们平时使用较多的
/******************************************
* ...text...
******************************************/
/
/// ...text...
/
2.如果在配置文件中将JAVADOC_ AUTOBRIEF 设置为YES,可使用JavaDoc 注释块,并自动展开一个简明描述。
在出现第一个“.”处结束,后跟一个空格或空白行。这里有一一个例子:
/** Brief description which ends at this dot. Details follow
* here.
*/
(C++的多行注释一样有效 /// )
例程(JAVADOC注释风格):
#include <stdio.h> /** * A test class. A more elaborate class descript ion. */ class Test { public: /** * An enum. * More detailed enum descript ion. */ enum TEnum { TVal1,/**< enum value TVal1. */ TVal2,/**< enum value TVal2. */ TVal3 /**< enum value TVal3. */ } *enumPtr, /**< enum pointer. Details. */ enumVar; /**< enum variable. Details. */ /** * A construc tor. * A more elaborate description of the construc tor. */ Test(); /** * A destructor. * A more elaborate description of the des tructor. */ ~Test(); /** * a normal member taking two arguments and returning an integer value. * @param a an integer argument. * @param s a constant character pointer. * @see Test() * @see~Test() * @see testMeToo() * @see publicVar() * @return The test results */ int testMe(int a, const char *s) ; /** * A pure virtual member. * @see testMe() * @param c1 the first argument. * @param c2 the second argument. */ virtual void testMeToo(char cl, char c2) = 0; /** * a public variable. * Details. */ int publicVar; /** * a function variable. * Details. */ int(*handler)(int a, int b); };
如果你希望文档化一个文件,结构,联合,类以及枚举的成员,需要为复合体中的这些成员放置文档,有时希望放置在成员之后的文档块,可以替换掉原有的块,因此要在注释块中加入“<”标记。 请注意“<”作为一个函数参数值是有效的Note that this also works for the parameters of a function 。
example:
QT注释风格:
int var; /*!< Detailed description after the member */
JAVADOC ( C )注释风格:
int var; /**< Detailed description after the member */
C++注释风格:
int var; ///< Detailed description after the member
int var; //!< Detailed description after the member
一般在结构体成员后放置一个简明描述
函数中可用 “@param” 来文档化它的参数,使用“[in],[out], [in, out]”文档化它的执行方向。
内联文档则可能从方向属性开始记录For inl ine documentation this is also possible by starting with the directionattribute,例如:
void foo(int v /**< [in] docs for input parameter v. */);
警告:
这些块只能用于文档化成员和参数,无法用于文件,类,联合,结构,组,名字空间以及枚举,此外下面结构化命令(比如\class)是不允许在这些注释块中出现的。
在每一行的开始处放置列对齐的多个减号“-”, 一个bullet列表将自动生成。使用“-” 紧跟“#”,也能生成一个带编号的列表。
这有一个例子:
/********************************************
* A test class. A more elaborate class descript ion.
* A list of events:
* - mouse events
* - # mouse move event
* - # mouse click event\n
* More info about the click event.
* -# mouse double click event
* - keyboard events
* -# key down event
* -# key up event
*
* More text here.
**********************************************/
如果在列表中使用tabs进行缩排,请确认配置文件中TAB. _SIZE选项是否设置了正确的tab尺寸。可在列表结束的缩排层级的空白处放置一-一个点“.”或者开始一个新的段落,即可结束一个列表。这有一个不言自明的例子:
使用HTML命令,可以是注释段落更清晰
Doxygen一共有三种组合的机制,一种工作于全局级别,为每一个组创建一个新页面。
在文档中这些组被称为“模块”
第二种工作在一些复合体的成员列表中,参考“成员组”。
第三种工作于页面,参考“子页面”。
如果一个复合体(比如一一个类或文件)有很多成员,通常希望能将成员们一-同合并到组中,
如果你喜欢C风格注释,用以下两种块模板来定义一个成员组,注意成员组内部的组成员都必须是确实存在。
规范:
//@{
...
//@}
或者
/*@{*/
...
/*@}*/
example:
//@{
/** Same documentation for both members. Details */
void funclInGroup1() ;
void func2InGroup1() ;
//@}
在一个块开始标记“@{”之前可以放置一个单独的注释块,而此块必须包含@name (或\name)命令, 用于指定组的头部,也可选择让注释块包含更多的组信息。
成员组的嵌套是不被允许的。
如果一个类的成员组中的全部组成员都有相同的类型和保护级别(比如全是静态公有成员),那么整个成员组被当成类型/保护级别组的一-个 子分组(例如成员组将被看\“静态公有成员\”节点的子节点),假如两个或多个成员有不同的类型,那么组会将它们置于相同的层级上自动生成–个组,假如你希望强制类的全部组成员在顶层,你需要在类文档中加入\nosubgrouping命令。
/** Test_sub class. * Details */ class Test_sub { public: /** Same documentation for both members. Details */ void funclInGroup1() ; void func2InGroup1() ; /** Function without group. Details. */ void ungroupedFunction(); void func1InGroup2(); protected: void func2InGroup2(); }; /** @name Group1 * Description of group 1. */ //@{ void Test_sub::funclInGroup1() {} void Test_sub::func2InGroup1() {} //@} /** @name Group2 * Description of group 2. */ //@{ /** Function 2 in group 2. Details. */ void Test_sub::func2InGroup2() {} /** Function 1 in group 2. Details. */ void Test_sub::func1InGroup2() {} //@} /** \file docs for this file */ //@{ //! one description for all members of this group //! (because DISTRIBUTE _GROUP_ _DOC is YES in the config file) #define A 1 #define B 2 void g_lob_func(); //@}
执行效果
在“模块”章节中简述添加结构的替代方法,为了更自然和方便地增加额外结构到页面中,可以使用\subpage命令。
A页面用\subpage命令增加-一个链接到B页面,同时将B页面变成A页面的一个子页。这对于GA,GB两个组同样有影响,使得GB变为GA一部分的方法,将A页面置于GA组内,而将B页面置于GB组内即可。
//--------------------------- 主页的使用 (\page的说明可放在不同文件中)------------------- //--------------------此处将页面添加到模块说明中 /** @defgroup groupA The Page Group A * This is the first group * @{ */ /** @brief class CA in group A */ class CA {}; /** function in group A */ void funcA() {} /** @} */// end of groupA /*! \mainpage A simple manual Some general info. This manual is divided in the following sections: - \subpage intro - \subpage advanced "Advanced usage" */ //----------------------------------------------------------- /*! \page intro Introduction * @ingroup groupA 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". */
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。