最近我们添加了一些代码,用于在编译时使用MACROS标记弃用代码。现在Doxygen没有正确记录已弃用的函数。
#if defined(__GNUC__)
#define DEPRECATED(func) func __attribute__((deprecated)) /**< mark a function as deprecated in gcc. */
#elif defined(_MSC_VER)
#define DEPRECATED(func) __declspec(deprecated) func /**< mark a function as deprecated in msvc. */
#endif
请注意,这是此帖子的宏的简化版本,实际的宏执行编译器版本检查等。
稍后在函数周围使用宏让编译器知道该函数已被弃用,因此将发出编译器警告。
/**
* myMethod() is deprecated.
*/
DEPRECATED(
/**
* @deprecated
* Description of deprecated function
*
* @param var this is a parameter
*
* @return this is returned
*/
int myMethod(int var)
);
问题是Doxygen想要显示DEPRECATED的文档而不是myMethod(int var)。
有谁知道如何让Doxygen记录myMethod而不是宏DEPRECATED?
答案 0 :(得分:3)
你应该告诉doxygen必须删除DEPRECATED
宏。您可以使用配置文件中的以下预处理器选项来执行此操作:
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = YES
PREDEFINED = "DEPRECATED(x)=x"
您可以通过使用-d Preprocessor
选项运行doxygen来调试预处理的结果。如果存在此选项,Doxygen将在执行预处理后将输入文件转储到输出。
答案 1 :(得分:1)
使用@fn tag明确说明该块所指的内容。不如隐式连接方便,但更安全。