没有预处理器的文档#define
Document #define without the preprocessor
在我编写的 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 pre-process conditional-compilation 指令。
如果你有条件编译,你打算让你的库的用户在他们构建自己的程序时触发,那么我建议采取不同的方法:拆分你的headers,以便您的用户 select 包含其中 headers 而不是依赖条件编译来自定义单个 header.
的内容
但是,如果您 必须 将每个 conditional-compilation 分支中的所有代码记录在一组文档中,并且您还想记录宏,那么您可以考虑保留预处理,并使用输入过滤器过滤掉条件编译指令。后面的部分可以这样指定,例如:
INPUT_FILTER = "sed '/^[ ]*#[ ]*\(if\|el\|endif\)/ d'"
这不考虑行的延续,以使其相对简单,但即使是那种形式,它也可能足以满足您的目的。如果需要,它可以被扩充以处理行继续。
在我编写的 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 pre-process conditional-compilation 指令。
如果你有条件编译,你打算让你的库的用户在他们构建自己的程序时触发,那么我建议采取不同的方法:拆分你的headers,以便您的用户 select 包含其中 headers 而不是依赖条件编译来自定义单个 header.
的内容但是,如果您 必须 将每个 conditional-compilation 分支中的所有代码记录在一组文档中,并且您还想记录宏,那么您可以考虑保留预处理,并使用输入过滤器过滤掉条件编译指令。后面的部分可以这样指定,例如:
INPUT_FILTER = "sed '/^[ ]*#[ ]*\(if\|el\|endif\)/ d'"
这不考虑行的延续,以使其相对简单,但即使是那种形式,它也可能足以满足您的目的。如果需要,它可以被扩充以处理行继续。