Doxygen使用学习(三)------Doxygen的特殊命令字之"结构类的表达"

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>之外的类文档中所使用链接名称,如果在默认包含路径中无法定位包含文件(如

/* 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. 
 */
  • @headerfile []

用于类,结构,联合的文档,同时这些文档都位于它们定义的前面。此命令的参数与@cmdclass命令的第二、三个参数相同。header-file名称会引用一个文件,它能被应用程序为获取类,结构,联合的定义而包含。<header-name>参数可用于覆盖<header-file>之外的类文档中所使用链接名称,如果在默认包含路径中无法定位包含文件(如

@headerfile test.h "test.h"
@headerfile test.h ""
@headerfile "" 

使用尖括号时你无需指定目标,如果你希望明确地指出,也可以使用一下方式:

@headerfile test.h <test.h>
@headerfile test.h <>
@headerfile <> 
  • @hideinitializer

一个定义的缺省值和一个变量的初始化都将显示在文档中,除非它们的行数超过30。放置该命令在一个定义或者变量的注释块中,初始化将一直被隐藏。

  • @idlexcept

表明了该注释块包含的文档是为了一个名字为<name>的IDL异常

  • @implements

用于手动指定一个继承关系,当编程语言不支持这个特性时(如C语言)。

  • @ingroup ( [ ])

若该命令被放置到一个类,文件,命名空间的注释块中,它将添加一个<groupname>的组或者是组id。

  • @interface [] []

为一个名字为<name>的接口指定一个文档注释块,参数与@class命令相同

  • @internal

该命令开始一个仅仅为了内部使用的文档段,这个段落在注释块结尾处结束。你也可以通过使用命令@endinternal提前结束该内部文档段。

如果该命令被放置的一个小节中(见@section中的例子),那么命令后的所有子小节将被看成internal,只有与其在同一层级的新节才能重新可见。

  • @mainpage [(title)]

如果该命令被放置到一个注释块,此块将被用于定制HTML的索引页,或latex的首章。这个很常用,就是生成段落的开始页面的内容,我一开始研究了好久才在stackoverflow上面查到应该这样用!!

title参数是可选的,并能替换掉doxygen生成的默认标题。如果你不需要任何标题,可以在命令后指定notitle。
例如:

/*! \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...
 */
  • @memberof

该命令使得类中的一个成员函数与@relates有相同的功能。 只有用这个命令函数才能被表述为一个类的真正成员。当编程语言不支持成员函数的概念时它将非常有用(如C语言)。

  • @name [(header)]

该命令将成员组中的头定义转变成一个注释块,注释块将位于一个包含成员组的//@{ ... //@} 块。

  • @namespace

为一个名字为<name>的命名空间指定一个文档注释块

  • @nosubgrouping

可放置在一个类文档中,用于在合并成员组时,避免doxygen放置一个公有,保护或者私有的子分组。

  • @overload [(function declaration)]

用于为一个重载成员函数生成后续的标准文本:这是一个未来便利而提供的重载函数,它不同于上述函数,只包含那些它接受的参数。

如果在函数声明或者定义之前,无法定位重载成员函数的文档,能用可选参数来指定正确的函数。在生成的消息之后将会附带文档块内其他的文档。

注意:你要承担起确认文档的重载成员正确与否的责任,在这种情况下为了防止文档重新排列,必须将SORT_MEMBER_DOCS设置为NO。

注意:在一行注释中@overload命令无法工作

例如:

class Overload_Test 
{
public: 
    void drawRect(int,int,int,int); 
    void drawRect(const Rect &r);
};
void Overload_Test::drawRect(int x,int y,int w,int h) {}
void Overload_Test::drawRect(const Rect &r) {}
/*! @class Overload_Test 
 *  @brief A short description. 
 *
 *  More text. 
 */
/*! @fn void Overload_Test::drawRect(int x,int y,int w,int h) 
 * This command draws a rectangle with a left upper corner at ( \a x , \a y ), 
 * width \a w and height \a h.  
 */
/*!
 * @overload void Overload_Test::drawRect(const Rect &r) 
 */
  • @package

为一个名字为<name>的Java包指定一个文档注释块。

  • @page (title)

指定一个注释块,它包含了一个与特定的类,文件,成员非直接关联的文档块。HTML生成器将创建一个包含此文档的页面,而latex生成器将在’页文档’的章节中开始一个新的小节。

例如:

/*! @page page1 A documentation page  
    @tableofcontents  Leading text.  
    @section sec An example section  This page contains the subsections @ref subsection1 and @ref subsection2.  
    For more info see page @ref page2.  
    @subsection subsection1 The first subsection  Text.  
    @subsection subsection2 The second subsection  
    More text.
 */
/*! @page page2 Another page  
    Even more info.
*/
  • @private

指定注释块中的私有文档化成员,它只能被同一类的其他成员访问。

注意:doxygen会自动确认面对对象语言中的成员保护层级,此命令用于不支持保护层级的概念的语言。(如C语言和PHP4)

私有成员小节的开始处,有一种与C++中private:类似的标记法,使用@privatesection

  • @privatesection

开始一个私有成员的小节,与C++中private类似的标记法,指定注释块中的私有文档化成员,它只能被同一类的其他成员访问。

  • @property (qualified property name)

为一个属性(即可是全局也可是一个类成员)指定一个文档注释块,此命令等价于@var @fn

  • @protected

指定注释文档中的保护文档化成员,它只能被同一类的其他成员或派生类访问。

注意:doxygen会自动确认面对对象语言中的成员保护层级,此命令用于不支持保护层级的概念的语言。(如C语言和PHP4)

保护成员开始处,有一种与C++中protected:类似的标记法,使用@privatesection

  • @protocol [] []

为Object-C中名字为<name>的协议指定一个文档注释块,它的参数与@class相同。

  • @public

指定注释文档中的公有文档化成员,它只能其他类或函数访问。

注意:doxygen会自动确认面对对象语言中的公有层级,此命令用于不支持公有层级的概念的语言。(如C语言和PHP4)

公有成员开始处,有一种与C++中public:类似的标记法,使用@publicsection

  • @pure

指定注释文档中纯虚成员,它是抽象的没有被实施的成员。

注意:此命令用于不支纯虚方法的概念的语言。(如C语言和PHP4)

  • @relates

用于名字为<name>非成员函数的文档,它可以放置在这个函数到类文档的“关联函数”小节内,该命令对于非友元函数与类之间建立强耦合是非常有用的。它无法用于文件,只能用于函数。

/*!  
 * A String class. 
 */
class String
{ 
    friend int strcmp(const String &,const String &);
};
/*! 
 * Compares two strings. 
 */
int strcmp(const String &s1,const String &s2)
{
}
/*! @relates String 
 * A string debug function. 
 */
void stringDebug() 
{
}
  • @related

同@relates

  • @relatesalso

用于名字为<name>非成员函数的文档,它可以放置在这个函数到类文档的“关联函数”小节内,也可是远离它正常文档的位置。该命令对于非友元函数与类之间建立强耦合是非常有用的。只能用于函数。

  • @showinitializer

只显示定义的默认值和变量的初始化,如果它们的文本行数小于30,在变量或定义的注释块中放置这个命令,初始化过程将无条件被显示出来。

  • @static

指定注释文档中静态成员,它定义在类中,但不属于类的实例化,它属于整个类!

注意:此命令用于不支静态方法的概念的语言。(如C语言和PHP4)

  • @struct [] []

为一个名字为<name>的结构体指定一个文档注释块,它与参数@class相同

  • @typedef (typedef declaration)

为一个类型转换指定一个文档注释块,它与参数@var @fn相同

  • @union [] []

为一个名字为<name>的联合体指定一个文档注释块,它与参数@class相同

  • @var (variable declaration)

为一个变量或者枚举值指定一个文档注释块,它与参数@typedef @fn相同

  • @vhdlflow [(title for the flow chart)]

这是一个硬件描述语言特定的命令,可以放在文档中产生一个逻辑过程的流程图。流程图的标题可以随意指定。

  • @weakgroup [(title)]

用法与@addtogroup相似,但当解决组定义冲突时,它将会有一个更低的优先级。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Qt Creator是一款用于Qt应用程序开发的集成开发环境(IDE)。它提供了一个直观、易于使用的界面,帮助开发人员更高效地构建Qt应用程序。 Doxygen是一种用于自动化代码文档生成的工具。它可以从代码中提取信息,并生成HTML、LaTeX、RTF等格式的文档。开发人员可以通过添加注释来描述代码的功能、、函数等,Doxygen会根据这些注释生成相应的文档。 Qt Creator集成了Doxygen文档生成工具,使得我们可以方便地为我们的Qt项目添加文档注释,并生成相应的文档。在Qt Creator的帮助菜单中,我们可以找到Doxygen的相关选项和设置。 使用Qt Creator和Doxygen可以帮助开发人员轻松创建和维护项目的文档。通过添加适当的注释,我们可以清晰地描述我们的代码,并生成易于理解的文档。这对于代码的维护和项目的开发都非常重要。 另外,Qt Creator还提供了一些与文档相关的其他功能。例如,在代码编辑器中,我们可以通过鼠标悬停来查看注释以及和、函数相关的信息。这样可以快速了解这些代码的功能和用法,提高开发效率。 总之,Qt Creator集成了Doxygen工具,使得代码的文档生成变得更加方便和直观。开发人员可以通过适当添加注释,生成高质量的文档,提高代码的可读性和项目的可维护性。 ### 回答2: Qt Creator是一款强大的跨平台集成开发环境(IDE),而Doxygen是一种文档生成工具。Qt Creator与Doxygen的组合可以帮助开发人员更好地管理和生成代码文档。 首先,Qt Creator提供了丰富的代码编辑功能,如自动补全、语法高亮、代码导航等,使开发人员在编写代码时更加高效。同时,Qt Creator还与Qt框架集成紧密,可以轻松地进行Qt程序的开发和调试。此外,Qt Creator还支持多种编程语言,包括C++、QML、Python等,满足了不同开发需求。 而Doxygen则是一种自动化文档生成工具。开发人员可以在代码中添加特定格式的注释,然后使用Doxygen生成代码文档Doxygen支持多种输出格式,如HTML、LaTeX、XML等,可以根据需求生成不同形式的文档。它可以将代码中的注释、、函数等信息转化为易读的文档,使其更加可理解和可维护。通过Doxygen生成的文档,开发人员可以更好地了解代码的结构和功能。 Qt Creator与Doxygen的结合可以提供更好的代码开发和文档管理体验。在Qt Creator中,开发人员可以轻松地编写代码,并在代码中添加Doxygen格式的注释。然后,使用Doxygen生成代码文档,将代码文档与代码开发整合起来。这样,开发人员可以更加方便地查看和理解代码的结构和功能,提高代码的可读性和可维护性。同时,通过文档生成工具的支持,开发人员还可以将生成的文档与团队成员分享,加强团队合作。 总结而言,Qt Creator与Doxygen的结合使得代码开发和文档管理更加高效和便捷。开发人员可以借助Qt Creator提供的丰富功能进行代码开发,并使用Doxygen生成易读的代码文档,提高代码的可读性和可维护性,促进团队合作。 ### 回答3: Qt Creator是一款跨平台的集成开发环境(IDE),用于开发Qt应用程序。而Doxygen是一款自动化文档生成工具,用于从源代码中生成可阅读的文档。那么,qtcreator-doxygen指的就是Qt Creator集成了Doxygen功能,可以直接在IDE中使用Doxygen来生成文档。 Qt Creator集成了Doxygen之后,用户可以通过简单的操作来生成项目的API文档。在编写Qt应用程序的过程中,开发者可以使用特定的注释格式来标记代码的各个部分,比如、函数、成员变量等。然后,通过使用Doxygen相关的命令,结合Qt Creator的集成,可以快速生成项目的文档。 Qt Creator集成Doxygen的好处在于可以方便地在同一个开发环境中进行代码编写和文档生成。开发者无需切换到其他工具或命令行窗口,只需在Qt Creator中一键生成文档。这样不仅提高了效率,还可以减少因为切换工具而导致的操作失误。 另外,Qt Creator集成Doxygen还可以提供一些额外的功能,比如代码自动补全、快速跳转到定义等。这些功能可以提高开发者编写文档的效率和准确性。 总之,qtcreator-doxygen是指Qt Creator集成了Doxygen,使开发者可以方便地在IDE中生成项目的API文档。这样的集成不仅提高了开发效率,还能改善代码的可维护性和可读性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值