我有一个可变参数函数,它在我的应用程序中打印错误消息,其代码如下:
void error(char *format,...)
{ va_list args;
printf("Error: ");
va_start(args, format);
vfprintf(stderr, format, args);
va_end(args);
printf("\n");
abort();
}
该函数用于错误情况如下:
error("invalid image width %d and image height %d in GIF file %s",wid,hei,name);
该error()
函数从不同的地方以不同的参数调用(可变参数函数)。
函数方法工作正常。
现在,如果我必须将此函数转换为宏,我该怎么做?我试着这样做:
#define error(format) {va_list args;\
printf("Error: ");\
va_start(args, format);\
vfprintf(stderr, format, args);\
va_end(args);\
printf("\n"); abort()}
但这不能正确打印参数。
上面的宏定义有什么问题?
解决方法是什么?