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)