记录预处理器在Doxygen中定义

时间:2010-03-01 13:38:28

标签: c++ c-preprocessor doxygen

是否可以在Doxygen中记录预处理器定义?我希望能够像变量或函数那样做,但Doxygen输出似乎“丢失”了定义的文档,并且也不包含定义本身。

我尝试了以下

/**My Preprocessor Macro.*/
#define TEST_DEFINE(x) (x*x)

/**@def TEST_DEFINE

   My Preprocessor Macro.
*/
#define TEST_DEFINE(x) (x*x)

我也尝试将它们放在一个组(尝试defgroup,addtogroup和ingroup)中,而不仅仅是在“文件范围”,但是它们也没有任何效果(尽管组中的其他项目是按照预期记录的)。

我查看了各种Doxygen选项,但看不到任何可以启用(或阻止)文档定义的内容。

4 个答案:

答案 0 :(得分:29)

是的,有可能。 Doxygen documentation说:

  

要记录全局对象(函数,typedef,枚举,宏等),   您必须记录定义它们的文件。换一种说法,   必须至少有一个

     

/*! \file */

     

     

/** @file */

     

此文件中的行。

您可以使用@defgroup@addtogroup@ingroup将相关项目放入同一模块,即使它们出现在单独的文件中(有关详细信息,请参阅文档here )。这是一个适合我的最小例子(使用Doxygen 1.6.3):

<强>的Doxyfile

# Empty file.

<强> Test.h

/** @file */

/**My Preprocessor Macro.*/ 
#define TEST_DEFINE(x) (x*x) 

/**
 * @defgroup TEST_GROUP Test Group
 *
 * @{
 */

/** Test AAA documentation. */
#define TEST_AAA (1)
/** Test BBB documentation. */
#define TEST_BBB (2)
/** Test CCC documentation. */
#define TEST_CCC (3)
/** @} */

<强> foo.h中

/** @file */

/**
 * @addtogroup TEST_GROUP
 *
 * @{
 */

/** @brief My Class. */     
class Foo {
    public:
        void method();
};

/** @} */

<强> Bar.h

/** @file */

/**
 * @ingroup TEST_GROUP
 * My Function.
 */
void Bar();

在这种情况下,TEST_DEFINE文档会显示在HTML输出中文件标签下的 Test.h 条目中,{{1} }等定义出现在模块标签中的测试组下,同时还有类TEST_AAA和函数Foo

需要注意的一点是,如果您将文件名放在Bar命令之后,例如:

@file

然后这必须匹配文件的实际名称。如果没有,则不会生成文件中项目的文档。

如果您不想添加/** @file Test.h */ 命令,另一种解决方案是在Doxyfile中设置@file

我希望这有帮助!

答案 1 :(得分:4)

在我的“C”文件中,我使用注释格式和#define这样的行:

/** @brief Number of milli-seconds to wait*/
#define kTimeoutMSec (2)

我的html文档最终包含我指定的文档。 (我的文件顶部有@file,EXTRACT_ALL = YES)

答案 2 :(得分:3)

尝试设置EXTRACT_ALL选项,我在项目中设置了它,并为#defines生成文档。在不使用EXTRACT_ALL的情况下,可能有一种更优雅的方式,所以请务必查看文档

http://www.doxygen.nl/config.html#cfg_extract_all

答案 3 :(得分:2)

添加到以前的答案,还需要在Doxyfile上有{{1}}。