我一直在努力实现C中的函数宏,预先考虑“DEBUG:”一个stringising宏的说法,并且将其参数传递给printf:错误定义时__VA_ARGS__
#define DBG(format, ...) printf("DEBUG: " #format "\n", __VA_ARGS__)
这给了我这个错误在GCC:
src/include/debug.h:4:70: error: expected expression before ‘)’ token
#define DBG(format, ...) printf("DEBUG: " #format "\n", __VA_ARGS__)
^
据称,这是应该stringise格式,并通过它的可变参数对printf,但到目前为止,我不能让过去的这个错误。
编辑
上stringising参数放弃后,和双散列(##
)__VA_ARGS__
我现在有这样的错误:
src/lib/cmdlineutils.c: In function ‘version’:
src/lib/cmdlineutils.c:56:17: warning: ISO C99 requires rest arguments to be used [enabled by default]
DBG("version()");
我应该把一个逗号后论据?
DBG("version()",); // ?
仅供参考,DBG()现在看起来是这样的:
#define DBG(format, ...) printf("DEBUG: " format "\n", ##__VA_ARGS__)
对我的作品在GCC,你使用的编译器?你可以尝试在#和格式之间加一个空格吗? – Leeor
$ gcc --version:gcc(GCC)4.8.1 20130725(预发行) –