如何显示定义的值

spa*_*amy 5 doxygen c-preprocessor

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

#define REPEAT_N_TIMES 10
Run Code Online (Sandbox Code Playgroud)

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

该动作进行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
Run Code Online (Sandbox Code Playgroud)

MACRO_EXPANSION设置似乎改变了宏的“细节”。但我没有找到选择宏名称或其内容的方法。使用该命令\ref似乎不是正确的方式:它指的是“某物”而不是“某物”的内容

是否有我可以使用的运算符或函数,可能类似于C,我可以在其中使用类似的东西\ref *something而不是\ref something

Chr*_*ris 0

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

The action is done REPEAT_N_TIMES times.
Run Code Online (Sandbox Code Playgroud)

正如 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
Run Code Online (Sandbox Code Playgroud)

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

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