c - 不带预处理器的文档 #define

标签 c doxygen

在我正在编写的 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/

相关文章:

python - 我应该如何记录 Python 方法参数,以便它们出现在智能感知和 Doxygen 中?

c++ - C & C++ 中数组的动态内存分配

c - 发送数据包所需的最少数据量是多少?

python - 如何保持动态库嵌入C(.so文件)在不同Python版本之间的向后兼容性

c++ - 如何在 Doxygen 内联代码中转义特殊命令

自定义 Doxygen html 输出

doxygen - 如何为 Doxygen 输出设置图标

c - 为什么 GCC 在将有符号文字分配给无符号类型时不产生警告?

c - 从 C 字符串中提取 "whole number"和 "decimal"?

c++ - 在 doxygen 中更改文档代码的版本(不使用宏)