方法一:
#define Log(format,args...) do{\
fprintf(stderr,format,##args)}\
while(0)
注意while后面是没有分号的,因为当使用的时候,在语句的后面加上,当宏在展开的时候。。。。?
方法二:
使用va_list、va_start、va_end。
int vprintf / vscanf(const char * format, va_list ap); // 从标准输入/输出格式化字符串
int vfprintf / vfsacanf(FILE * stream, const char * format, va_list ap); // 从文件流
int vsprintf / vsscanf(char * s, const char * format, va_list ap); // 从字符串
http://hi.baidu.com/wenborao/blog/item/4ca0a9f8605f9e0cd9f9fd98.html(很全面)
http://www.cnblogs.com/rainduck/archive/2010/11/10/1873417.html
http://hi.baidu.com/kang_liang/blog/item/168c9059a9a1ca2d2934f05f.html
http://upc.gg.blog.163.com/blog/static/2979849820112129027787/