查看我的代码
#include<stdarg.h>
#define DPRINTF(_fmt, ...) debugPrintf(_fmt,__VA_ARGS__)
void debugPrintf(const char *fmt, ...)
{
char buf[128];
va_list ap;
va_start(ap, fmt);
vsnprintf(buf, sizeof(buf), fmt, ap);
va_end(ap);
fprintf(stderr,"%s",buf);
return;
}
main()
{
int a=10;
DPRINTF("a is %d",a);
DPRINTF("WHY THIS STATEMENT GETS ERROR");
}
为什么这段代码无法编译。 当我评论时
//DPRINTF("WHY THIS STATEMENT GETS ERROR");
它的工作正确..
有没有办法用...(变量参数)编写调试来处理我不想传递任何变量的条件
答案 0 :(得分:3)
尝试
#define FOO(fmt, ...) printf(fmt, ##__VA_ARGS__)
在第一个参数之后没有参数的情况下会出现双重哈希。
答案 1 :(得分:3)
只需使用
#define DPRINTF(...) debugPrintf(__VA_ARGS__)
可变参数宏,除了可变参数函数,不需要固定的参数。