区别
“#”:将其后面的宏参数进行字符串化操作
“##”:在带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串
实验
例子一:
#include <stdio.h>
#define paster( n ) printf( "token" "#n" " = %d", token##n )
int main()
{
int token9 = 10;
paster(9);
return 0;
}
paster(9)宏展开结果:
printf("token9 = %d", token9)
输出结果:
token9 = 10
例子二:
#define hehe(x,y) x##y
int main()
{
char string[] = "hello world";
printf("%s\n", hehe(str, ing));
return 0;
}
输出结果:
hello world