在doxygen中记录#unde的好方法
我目前有两个#define in c文件,用于关闭硬件的一些功能以进行测试。但是,当它们还未定义时,我想用doxygen来记录它们 例如: 这很好:在doxygen中记录#unde的好方法,doxygen,undef,Doxygen,Undef,我目前有两个#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中会收到一条警告,并且它不会显示在d
/// \def SIMULATE_SOME_HW_INTERFACE
/// Define this when you want to simulate HW interface.
#define SIMULATE_SOME_HW_INTERFACE
当您将#define更改为#undef时,在doxygen中会收到一条警告,并且它不会显示在doxygen生成的输出中。我想记录这个#定义它是定义的还是未定义的
如何强制doxygen记录一个#undef???我找到了一个很麻烦的方法,在#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
我试图弄清楚如何使用预定义选项在Doxyconfig文件中设置SIMULATE_HW_接口。无法让它工作。这是我目前为止最好的解决方案。在仅由Doxygen包含的头文件中定义它们(放在与主源代码不同的目录树中) 通过使用仅在Doxygen设置中定义的define来保护此头文件,例如:
#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。我解决了在主标题文件中记录编译器标签的问题:
/**
* \defgroup flags Compilerflags
*/
/**
* \def MY_FLAG
* \ingroup flags
* Dokumentation....
*/
#ifndef MY_FLAG
#define MY_FLAG
#undef MY_FLAG
#else
#define MY_FLAG
#endif
这样一切都可以正常工作:doxygen和编译,您可以继续在命令行中指定您的标志…也许最好的解决方案不会定义您需要定义的内容。根据我的经验#undef只用于玩把戏/黑客这有点像黑客。我想编写大量代码,处理开发机器上未安装的专用硬件,但在需要在实际目标机器上运行时可以轻松启用。作为对undef的一个真正重大警告,我曾经为苹果修复了一个长达18个月的bug。Quicktime头依赖于递归地包含条件定义,而传统的保护变量是未定义的。后来,有人添加了
#pragma one
,这意味着编译器破坏了递归包含。顺便说一句,这看起来很奇怪(一些静态分析器可能会注意到),我同意你的看法。这只是一个解决办法。我希望有人知道如何强制doxygen记录一个#unde。