3

我目前有几个#define in c 文件,它们关闭了硬件的某些功能以进行测试。但是,当它们未定义时,我想用 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 ???

4

3 回答 3

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

我已经使用它来有条件地包含诸如 MFC 基类之类的轻量级类定义,因此它们显示为类层次结构的基础,而无需解析所有 MFC。

于 2010-09-11T08:07:28.333 回答
1

我通过在#define 下添加#undef 找到了一种笨拙的方法。这样它是为 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 。无法让它工作。所以这是我迄今为止最好的解决方案。

于 2010-08-24T18:20:45.040 回答
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 和编译,你可以继续在命令行中指定你的标志......

于 2011-04-29T13:52:57.550 回答