【问题标题】:Doxygen Document All Conditional DefinesDoxygen 记录所有条件定义
【发布时间】:2016-12-17 07:15:25
【问题描述】:

我有一个项目,其中我有大量的条件定义来简化跨平台开发。但是,我在说服 Doxygen 提取所有定义时遇到了问题,因为它只会拾取那些碰巧评估的定义。

例如在下面的 sn-p 中,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

启用 EXTRACT_ALL 没有帮助,禁用预处理会导致 Doxygen 根本不记录任何内容。如何让 doxygen 提取两种情况的文档?

【问题讨论】:

    标签: c c-preprocessor doxygen


    【解决方案1】:

    我提出了一个冗长但有效的“解决方案”。当你想要使用#elseif 语句时,它比只使用纯#if 语句更不尴尬。虽然两者都可以。

    首先,定义一切,不要关心条件逻辑。

    /** Some define */
    #define TARGET_DEFINE
    
    /** Some other define */
    #define OTHER_TARGET_DEFINE
    

    其次,将您最初用于创建定义的条件逻辑转换为未定义逻辑。

    #if !(ORIGINAL_LOGIC)
    #undef TARGET_DEFINE
    #endif
    

    最后,更改条件逻辑,以便在 doxygen 进行预处理时没有任何未定义的内容。

    #if !defined(DOXYGEN)
    ...
    

    【讨论】:

      猜你喜欢
      • 2016-05-07
      • 1970-01-01
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多