为什么doxygen截断参数化的宏函数属性?

时间:2016-11-20 06:46:22

标签: doxygen

给出以下宏定义:

#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似乎正在截断函数属性的一部分,如下所示:

enter image description here

而且:

enter image description here

在我使用宏函数属性的其他情况下,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而不截断这个?

1 个答案:

答案 0 :(得分:0)

这似乎是doxygen中的约束(发音为&#39; bug&#39;)导致它被截断。另一种方法是通过将宏添加到PREDEFINED配置来完全删除函数属性的生成。