【问题标题】:Doxygen - documenting X MacroDoxygen - 记录 X 宏
【发布时间】:2021-09-13 12:05:14
【问题描述】:

我正在使用 Doxygen 1.8.11 版并尝试创建我的 X 宏:

#define COLOR_VARIABLES\
COLOR__X(RED /*!< "RED COLOR" */)\
COLOR__X(BLUE /*!< "BLUE COLOR" */)\

然后我在一个枚举中使用它:

/** COLOR doc */
typedef enum {
  #define COLOR__X(name) name,
     COLOR_VARIABLES
  #undef COLOR__X

} color;

我将 MACRO_EXPANSION 和 ENABLE_PREPROCESSING 设置为 YES,并在我的文件开头设置了 @file

我希望使用 doxygen 创建的 HTML 显示使用 x 宏定义的每个变量的文档。能做到吗?

编辑

所以在这里提出一些建议后,我注意到在我的 doxyfile 中我有以下配置:

MACRO_EXPANSION        = YES
EXPAND_ONLY_PREDEF     = YES
ENABLE_PREPROCESSING   = YES
PREDEFINED             = INNER_FUNC(msg)=

如果我将EXPAND_ONLY_PREDEF 更改为否,它会起作用,但会导致我的项目出现其他问题。我已尝试执行以下选项,但没有成功:

选项 1:

PREDEFINED             = INNER_FUNC(msg)= /
                        COLOR__X(name)=name, /
                        COLOR__X:=COLOR__X

选项 2:

EXPAND_AS_DEFINED      = COLOR__X(name) /
                        COLOR__X

【问题讨论】:

  • 您的问题描述了您想要做什么,但没有描述它失败的原因。请提供有关您的方法如何未能达到您预期的信息。
  • 这能回答你的问题吗? X-macro breaks doxygen callgraph
  • 您提到:如果我将 EXPAND_ONLY_PREDEF 更改为 No 它将起作用,但它会导致我的项目中出现其他问题。什么样的问题?
  • 我照你说的做了,将EXPAND_ONLY_PREDEF 更改为No 并解决了我需要将以下内容添加到doxyfile 的另一个问题:PREDEFINED = __attribute__((x))= 感谢您的帮助!

标签: c c-preprocessor documentation doxygen


【解决方案1】:

有点渴望评论。我没有发现问题(1.8.11 和 1.9.2)。

doxygen 版本 1.8.11 是从 2015 年 12 月开始的,所以我真的建议您升级到当前版本 (1.9.2)

我用过: aa.h

/// \file

#define COLOR_VARIABLES\
COLOR__X(RED /*!< "RED COLOR" */)\
COLOR__X(BLUE /*!< "BLUE COLOR" */)\

/** COLOR doc */
typedef enum {
  #define COLOR__X(name) name,
     COLOR_VARIABLES
  #undef COLOR__X

} color;

Doxyfile

MACRO_EXPANSION = YES
ENABLE_PREPROCESSING = YES
QUIET = YES

得到结果:

这对我来说看起来不错。我错过了什么吗?

【讨论】:

  • 当我尝试这样做时,html 不显示枚举数,只显示枚举描述“COLOR doc”。另外我想从另一个函数文档链接到它,我收到错误:`错误:无法解决对“RED”的显式链接请求(警告视为错误,现在中止)
  • 请显示您使用的最小代码(带有文件名)以及您使用的与默认设置不同的设置。很难说你到底做了什么。
猜你喜欢
  • 2017-07-07
  • 2017-01-12
  • 2016-05-07
  • 2011-05-31
  • 2011-11-21
  • 2017-08-25
  • 1970-01-01
  • 2013-03-03
  • 1970-01-01
相关资源
最近更新 更多