Linux源代码中偶尔会遇到#号,虽然很少用到,但还是做个笔记:
①#:对它所引用的宏变量左右各加上一个双引号
前提:
printf("123""456"); //printf是可以这样使用的,输出123456
例:
#define test(EXP) #EXP
printf("123"test(45)"6");//等价于printf("123""45""6");
②##:在带参数的宏定义中将两个子串(token)联接起来形成一个新子串(非字符串)。
- 子串:编译器能够识别的最小语法单元
#define test(n) a##n##c
int test(b)=123; #等价于int abc=123
printf("%d",abc); #输出123