宏补充(#与##篇)

#:预处理指令宏剥离用

##:预处理指令宏粘合使用

先谈谈#

#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;
}

 

posted @ 2023-05-28 11:42  alexlance  阅读(23)  评论(0编辑  收藏  举报