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

Why is doxygen truncating a parameterized macro function attribute?

给定以下宏定义:

#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}="/*  *<!-- -->/"
OPTIMIZE_OUTPUT_FOR_C  = YES
EXTRACT_ALL            = YES
EXTRACT_STATIC         = YES
GENERATE_HTML          = NO
GENERATE_XML           = NO
GENERATE_MAN           = NO

有什么巧妙的方法可以让 Doxygen 不截断它吗?

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