"#" 代表和一个字符串相连接
"##" 代表和一个符号连接,符号可以是变量,或另一个宏符号。
#define printk(format,arg...) printf(format,#arg)
prinfk("hello : %d %d %d",1,2,3) gcc -E 是 printf("hehe%d %d %d/n","1,2,3");
prinfk("hello : %d %d %d" ) gcc -E 是 printf("hehe%d %d %d/n","")
#define printk(format,arg...) printf(format,##arg)
prinfk("hello : %d %d %d",1,2,3) gcc -E 是 printf("hehe%d %d %d/n",1,2,3);
prinfk("hello : %d %d %d" ) gcc -E 是 printf("hehe%d %d %d/n")
所以##用来作为可变参数函数宏里最后一个参数的前缀.