在一些 doxygen 文档中,我想显示 #define
的内容,而不是标签本身。例如,在一个 C 文件中,我有
#define REPEAT_N_TIMES 10
现在在我的文档中我想显示:
The action is done 10 times.
如果我使用
\ref REPEAT_N_TIMES
,它会显示:The action is done REPEAT_N_TIMES 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
的东西?
最佳答案
preprocessing 上的 doxygen 手册页似乎包含您需要的所有信息。作为第一步,尝试将 doxygen 配置文件中的 MACRO_EXPANSION
标志设置为 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 页面上的 this post。根据这篇文章,在注释块中实现宏扩展的唯一方法是使用
INPUT_FILTER
配置文件设置。使用类似的东西INPUT_FILTER = sed /REPEAT_N_TIMES/10
警告: 上述
INPUT_FILTER
尚未经过测试。如果您不想使用
INPUT_FILTER
,那么 this 对另一个线程的回答可能是您最好的选择。从本质上讲,它表示您可以记录宏,因此文档的读者将能够轻松找到真正的值(value)。因此,将文档添加到您的 #define
中,并在文档中的其他地方对其进行 \ref
。
关于doxygen - 如何显示定义的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10137566/