记录预处理器在Doxygen中定义

Fir*_*cer 24 c++ doxygen c-preprocessor

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

我尝试了以下内容

/**My Preprocessor Macro.*/
#define TEST_DEFINE(x) (x*x)
Run Code Online (Sandbox Code Playgroud)

/**@def TEST_DEFINE

   My Preprocessor Macro.
*/
#define TEST_DEFINE(x) (x*x)
Run Code Online (Sandbox Code Playgroud)

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

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

Chr*_*isN 31

对的,这是可能的.该Doxygen文档说:

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

/*! \file */

或者a

/** @file */

该文件中的行.

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

Doxyfile:

# Empty file.
Run Code Online (Sandbox Code Playgroud)

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)
/** @} */
Run Code Online (Sandbox Code Playgroud)

Foo.h:

/** @file */

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

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

/** @} */
Run Code Online (Sandbox Code Playgroud)

Bar.h:

/** @file */

/**
 * @ingroup TEST_GROUP
 * My Function.
 */
void Bar();
Run Code Online (Sandbox Code Playgroud)

在这种情况下,该TEST_DEFINE文件出现在Test.h下进入文件输出的HTML标签,和TEST_AAA等定义下出现测试组模块选项卡连同类Foo和功能Bar.

需要注意的一点是,如果您在@file命令后面放置文件名,例如:

/** @file Test.h */
Run Code Online (Sandbox Code Playgroud)

那么这必须与文件的实际名称相匹配.如果没有,则不会生成文件中项目的文档.

如果您不想添加@file命令,另一种解决方案是EXTRACT_ALL = YES在Doxyfile中进行设置.

我希望这有帮助!


小智 5

在我的“C”文件中,我使用注释格式和 #define 行,如下所示:

/** @brief Number of milli-seconds to wait*/
#define kTimeoutMSec (2)
Run Code Online (Sandbox Code Playgroud)

我的 html 文档最终包含我指定的文档。(我确实在文件顶部有@file 并且 EXTRACT_ALL=YES)