宏补充(#与##篇)
#:预处理指令宏剥离用
##:预处理指令宏粘合使用
先谈谈#
#define str(n) n #define str(n) aanbb//无法实现 #define str(n) "aanbb"//只能输出字符串“aanbb”,无法达到预期目的 #define str(n) "aa"#n"bb"//将n剥离出来,利用了相邻字符串会合并为一个字符串的原理
然后是##
//#define x(n) xn #define x(n) x##n//粘合形成新变量 //#define add(a,b) aa+bb//没用 #define add(a,b) a##a+b##b//起到粘合剂作用 #include<stdio.h> int main() { int x(1) = 2; int x(2) = 3; printf("%d\n", x1); printf("%d\n", x2); printf("%d\n", add(1,2));//实际变为11+22 return 0; }