`-pedantic`生成的这个编译器警告是什么意思?

Mat*_*ner 6 c gcc c99 variadic

这个GCC警告意味着什么?

cpfs.c:232:33: warning: ISO C99 requires rest arguments to be used
Run Code Online (Sandbox Code Playgroud)

相关的路线是:

__attribute__((format(printf, 2, 3)))
static void cpfs_log(log_t level, char const *fmt, ...);

#define log_debug(fmt, ...) cpfs_log(DEBUG, fmt, ##__VA_ARGS__)

log_debug("Resetting bitmap");
Run Code Online (Sandbox Code Playgroud)

最后一行是函数实现中的第232行.编译器标志是:

-g -Wall -std=gnu99 -Wfloat-equal -Wuninitialized -Winit-self -pedantic
Run Code Online (Sandbox Code Playgroud)

Jen*_*edt 8

是的,这意味着您必须按照您定义的方式传递至少两个参数.你可以做到

#define log_debug(...) cpfs_log(DEBUG, __VA_ARGS__)
Run Code Online (Sandbox Code Playgroud)

然后你也避免了, ##构造的gcc扩展.