为什么 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
配置中来完全删除函数属性的生成。
给定以下宏定义:
#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
配置中来完全删除函数属性的生成。