如何显示定义的值

时间:2012-04-13 08:27:45

标签: doxygen c-preprocessor

在一些doxygen文档中,我想显示#define的内容,而不是标记本身。例如,在C文件中我有

#define REPEAT_N_TIMES 10

现在在我的文档中我要显示:

  

行动完成了10次。

如果我使用\ref REPEAT_N_TIMES,则会显示:

  

行动已完成REPEAT_N_TIMES次

有没有办法显示链接的内容,而不是链接本身,例如\ValueOf(\ref REPEAT_N_TIMES)\contentOf(\ref REPEAT_N_TIMES)

更新:我的Doxygen的配置是:

// Configuration options related to the preprocessor

ENABLE_PREPROCESSING   = YES
MACRO_EXPANSION        = YES
EXPAND_ONLY_PREDEF     = YES
SEARCH_INCLUDES        = YES
INCLUDE_PATH           =
INCLUDE_FILE_PATTERNS  =
PREDEFINED             = WXUNUSED()=
EXPAND_AS_DEFINED      =
SKIP_FUNCTION_MACROS   = YES

MACRO_EXPANSION设置似乎会更改宏的“详细信息”。但我没有看到选择宏名称或其内容的方法。使用命令\ref似乎不是正确的方法:它指的是“某事”而不是“某事”的内容

是否有我可以使用的操作符或函数,可能类似于 C ,我可以使用\ref *something而不是\ref something之类的内容?

1 个答案:

答案 0 :(得分:0)

preprocessing上的doxygen手册页似乎拥有您需要的所有信息。首先尝试将doxygen配置文件中的MACRO_EXPANSION标志设置为YES,然后在您的文档中包含

The action is done REPEAT_N_TIMES times.

如doxygen手册中所述,这将扩展所有宏定义(如果需要递归),这通常太多。因此,您可以使用配置文件中的EXPAND_ONLY_PREDEFEXPAND_AS_DEFINED设置准确指定要扩展的宏。例如,尝试设置

  

EXPAND_ONLY_PREDEF =是
  EXPAND_AS_DEFINED = REPEAT_N_TIMES

在配置文件中。

更新关注@ spamy的评论我对此进行了更多研究,似乎我上面提到的方法不适用于 注释块中的宏只扩展源代码中的宏。例如,请参阅doxygen sourceforge页面上的this post。根据这篇文章,在注释块中实现宏扩展的唯一方法是使用INPUT_FILTER配置文件设置。使用像

这样的东西
INPUT_FILTER = sed /REPEAT_N_TIMES/10

警告:上述INPUT_FILTER尚未经过测试。

如果您不想使用INPUT_FILTER,那么另一个帖子的this答案可能是您最好的选择。基本上它说你可以记录宏,所以文档的读者将能够轻松找到真正的价值。因此,请在文档的其他位置添加文档到#define,然后只添加\ref