Bla*_*iwi 5 c doxygen c-preprocessor
我有一个项目,我有大量的条件定义,使跨平台开发更容易.但是我在说服Doxygen提取所有定义时遇到了问题,因为它只会选择那些只发生在评估中的定义.
例如,在下面的代码片段中,Doxygen将记录TARGET_X86_64但不记录TARGET_ARM64.
#if defined(_M_ARM64) || defined(__arm64__) || defined(__aarch64__)
/** Build target is ARM64 if defined. */
#define TARGET_ARM64
#else
/** Build target is x86_64 if defined. */
#define TARGET_X86_64
#endif
Run Code Online (Sandbox Code Playgroud)
启用EXTRACT_ALL没有帮助,并且禁用预处理会导致Doxygen根本不记录任何内容.如何获取doxygen来提取两种情况的文档?
我制定了一个冗长但有效的“解决方案”。当您想要使用#elseif语句时,这比仅使用纯#if语句要容易得多。尽管两者都可以。
首先,定义一切,不要关心条件逻辑。
/** Some define */
#define TARGET_DEFINE
/** Some other define */
#define OTHER_TARGET_DEFINE
Run Code Online (Sandbox Code Playgroud)
其次,采用最初用于创建定义的条件逻辑并将其转换为取消定义逻辑。
#if !(ORIGINAL_LOGIC)
#undef TARGET_DEFINE
#endif
Run Code Online (Sandbox Code Playgroud)
最后,更改条件逻辑,以便 doxygen 进行预处理时没有未定义的内容。
#if !defined(DOXYGEN)
...
Run Code Online (Sandbox Code Playgroud)