【问题标题】:Doxygen conditional compilation does not produce documentationDoxygen 条件编译不产生文档
【发布时间】:2011-10-12 20:58:00
【问题描述】:

我是 doxygen 的相对初学者,并且正在记录一个 C 程序

部分代码为:

\#include "options.h"
// options.h contains
\#define VAL0 0   // Possible values for PARAM
\#define VAL1 1
\#define PARAM VAL0

// Here's the conditional compilation
\#if (PARAM == VAL0)
// code chunk, which doesn't get compiled by Doxygen
\#endif

代码按预期使用 GCC 编译,但我没有得到 Doxygen 文档

好的,Doxygen 不会扩展宏,所以我尝试了:

\#define SYMEQ(A, B) (A == B) ? 1 : 0

\#if SYMEQ(PARAM, VAL0)

// code chunk

\#endif

设置 Doxygen:

MACRO_EXPANSION = 是

EXPAND_ONLY_PREDEF = 是

没有预定义的宏

EXPAND_AS_DEFINED = SYMEQ

条件部分没有 doxygen 输出,由它决定

我也试过 EXPAND_AS_DEFINED SYMEQ(A, B)

也没有运气

我找到了一些名称简单的例子,然后是#ifdef NAME \code #endif,但没有一个带有宏函数的例子

【问题讨论】:

    标签: doxygen conditional-compilation


    【解决方案1】:

    我刚刚遇到问题#ifdef CONDITION \code not compiled by doxygen\ #endif 并通过蛮力修复了它,即手动将条件附加到设置PREDEFINED=CONDITION1 CONDITION2 ...

    我尝试了头文件解决方案——生成一个带条件的文件,并通过设置SEARCH_INCLUDESINCLUDE_PATHINCLUDE_FILE_PATTERNS包含它——但它不起作用。从doxygen manual来看,我认为需要在源文件中显式#include "the condition file",这意味着要修改源代码,所以我放弃了。

    SEARCH_INCLUDES: 如果 SEARCH_INCLUDES 标记设置为 YES(默认值),则在找到 #include 时将搜索 INCLUDE_PATH(见下文)中的包含文件。

    【讨论】:

      【解决方案2】:

      MACRO_EXPANSIONEXPAND_ONLY_PREDEF 仅控制是否在您的代码中扩展宏,而不控制如何在条件预处理器块中对其进行评估。例如,如果你有这样的代码:

      #define RET_TYPE int
      
      /**
       * Some function
       */
      RET_TYPE func(void);
      

      对于MACRO_EXPANSION=NO,doxygen 将记录为RET_TYPE func(void),宏不会展开。使用MACRO_EXPANSION=YES,这将被记录为int func(void),宏被扩展并且生成的签名被记录。

      要控制条件代码,您需要关注ENABLE_PREPROCESSING。如果此选项设置为NO,则条件代码将被忽略,并且条件中的所有代码都将被记录。如果设置为YES,将评估条件代码,并且仅记录条件匹配的块。在这种情况下,您需要确保正确定义所有正在评估的值,这可以通过允许 doxygen 评估包含文件来完成(请参阅SEARCH_INCLUDESINCLUDE_PATHINCLUDE_FILE_PATTERNS 选项),或者通过将宏预定义为具有特定值(请参阅PREDEFINED)。

      【讨论】:

        猜你喜欢
        • 2012-02-03
        • 2014-06-03
        • 2014-01-17
        • 2018-12-09
        • 1970-01-01
        • 1970-01-01
        • 2010-09-10
        • 2014-08-09
        • 2014-05-01
        相关资源
        最近更新 更多