5

在一些 doxygen 文档中,我想显示 a 的内容#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

4

1 回答 1

0

关于预处理的 doxygen 手册页似乎包含您需要的所有信息。作为第一步,尝试将MACRO_EXPANSIONdoxygen 配置文件中的标志设置为YES,然后在您的文档中包括

The action is done REPEAT_N_TIMES times.

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

EXPAND_ONLY_PREDEF = YES
EXPAND_AS_DEFINED = REPEAT_N_TIMES

在配置文件中。

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

INPUT_FILTER = sed /REPEAT_N_TIMES/10

警告:以上INPUT_FILTER内容未经测试。

如果您不想使用,INPUT_FILTER那么这个对另一个线程的回答可能是您最好的选择。本质上它说您可以记录宏,因此文档的读者将能够轻松找到真正的价值。因此,将文档添加到您的文档中,#define并将\ref其添加到文档的其他位置。

于 2012-04-13T08:50:01.897 回答