##是一个连接符号,用于把参数连在一起
#define FOO(arg) my##arg
int myxy =3;
cout<<FOO(xy);//输出3
注意:如果##后的参数本身也是一个宏的话,##会阻止这个宏的展开 。
#是“字符串化”的意思。出现在宏定义中的#是把跟在后面的参数转换成一个字符串
#define STRCPY(dst, src) strcpy(dst, #src)
int myxy =3;
char str1[20];
char str2[20];
STRCPY(str1, "abcd");
STRCPY(str2, abcd);
cout<<str1<<endl;//输出:"abcd"
cout<<str2<<endl;//输出:abcd
注意:上面的双引号都被转换位字符串了