在doxygen中记录#undef的好方法

时间:2010-08-24 17:02:52

标签: doxygen undef

我目前在c文件中有几个#define关闭一些功能到硬件进行测试。但是,我想在未定义时使用doxygen记录它们。

例如:

这很好用:

/// \def SIMULATE_SOME_HW_INTERFACE
/// Define this when you want to simulate HW interface.
#define SIMULATE_SOME_HW_INTERFACE

当您将#define更改为#undef时,您会在doxygen中收到警告,并且它不会显示在doxygen生成的输出中。我想记录这个定义或未定义的#define。

如何强制doxygen记录#undef ???

3 个答案:

答案 0 :(得分:3)

将它们定义在仅由Doxygen包含的头文件中(放在与主源不同的目录树中)。

通过使用您仅在Doxygen设置中定义的定义包装此头文件来保护此头文件,例如:

#ifdef ONLY_FOR_DOXYGEN

/// \def SIMULATE_SOME_HW_INTERFACE
/// Define this when you want to simulate HW interface.
#define SIMULATE_SOME_HW_INTERFACE

#endif

我已经使用它来有条件地包含lightweight class definitions这样的东西,比如MFC基类,所以它们作为类层次结构的基础而不必解析所有MFC。

答案 1 :(得分:1)

我通过在#define下添加#undef找到了一种kludgy方式。这种方式是为Doxygen定义的,但编译器立即未定义。

/// \def SIMULATE_SOME_HW_INTERFACE
/// Define this when you want to simulate HW interface.
/// Comment out #undef to simulate HW interface
#define SIMULATE_SOME_HW_INTERFACE
#undef  SIMULATE_SOME_HW_INTERFACE

我试图弄清楚如何使用PREDEFINED选项在Doxyconfig文件中设置SIMULATE_HW_INTERFACE。无法让它工作。所以这是迄今为止我最好的解决方案。

答案 2 :(得分:0)

我在主头文件中记录了这样的编译标志解决了我的问题:

/**
 * \defgroup flags Compilerflags
 */

/**
 * \def MY_FLAG
 * \ingroup flags
 * Dokumentation....
 */
#ifndef MY_FLAG
#define MY_FLAG
#undef MY_FLAG
#else
#define MY_FLAG
#endif

这样一切正常:doxygen和编译,你可以继续在命令行中指定你的标志......