在我正在编写的 Doxygen 文档中,我设置了 ENABLE_PREPROCESSING = NO
,因为我希望记录所有代码,独立于任何 #if
语句。
问题是我需要记录一个 #define
,但由于我已禁用预处理器,因此不会为其生成任何内容(该文件上的其他结构正在记录中)很好)。
一种选择是启用预处理器并使用 PREDEFINED
选项来设置所有 #if
,但在我的情况下这实际上是不可能实现的(太多的他们)。
还有其他方法可以达到预期效果吗?
谢谢!
最佳答案
On the Doxygen documentation I am writting, I have set
ENABLE_PREPROCESSING = NO
, because I want all of the code to be documented, independently of any#if
statements.
这有一些代码味道。您的代码所呈现的界面应根据其构建方式进行记录。记录本来可以构建但没有构建的功能,或者记录可以构建功能的替代方法是毫无意义的。一般来说,这意味着使用 Doxygen 预处理条件编译指令。
如果您希望库的用户在构建自己的程序时触发条件编译,那么我建议采用不同的方法:拆分 header ,以便您的用户选择要包含哪些 header ,而不是依赖条件编译来自定义单个 header 的内容。
但是,如果您必须在一组文档中记录每个条件编译分支中的所有代码,并且您还想记录宏,那么您可以考虑保留预处理并过滤使用输入过滤器输出条件编译指令。后一部分可以这样指定,例如:
INPUT_FILTER = "sed '/^[ ]*#[ ]*\(if\|el\|endif\)/ d'"
这不考虑行延续,以便保持相对简单,但即使以这种形式,它也可能足以满足您的目的。如果需要,可以对其进行扩充以处理行延续。
关于c - 不带预处理器的文档 #define,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48064256/