给出以下宏定义:
#if defined(__GNUC__) && __GNUC__ >= 4
#define WL_PRINTF(x, y) __attribute__((__format__(__printf__, x, y)))
#else
#define WL_PRINTF(x, y)
#endif
并给出以下用法,作为gcc函数属性:
typedef void (*wl_log_func_t)(const char *, va_list) WL_PRINTF(1, 0);
Doxygen似乎正在截断函数属性的一部分,如下所示:
而且:
在我使用宏函数属性的其他情况下,Doxygen也会截断它,因此问题似乎是一致的(它不是关于这是一个(typedef
)。它记录宏本身就好了。
我的.doxygen配置是:
PROJECT_NAME = "Wayland"
PROJECT_NUMBER = 1.12.90
OUTPUT_DIRECTORY = ../../doc/doxygen
JAVADOC_AUTOBRIEF = YES
TAB_SIZE = 8
QUIET = YES
HTML_TIMESTAMP = YES
GENERATE_LATEX = NO
MAN_LINKS = YES
PREDEFINED = WL_EXPORT=
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = YES
DOT_MULTI_TARGETS = YES
ALIASES += comment{1}="/* \1 *<!-- -->/"
OPTIMIZE_OUTPUT_FOR_C = YES
EXTRACT_ALL = YES
EXTRACT_STATIC = YES
GENERATE_HTML = NO
GENERATE_XML = NO
GENERATE_MAN = NO
是否有一些巧妙的方法来欺骗Doxygen而不截断这个?
答案 0 :(得分:0)
这似乎是doxygen中的约束(发音为&#39; bug&#39;)导致它被截断。另一种方法是通过将宏添加到PREDEFINED
配置来完全删除函数属性的生成。