#define 是宏定义
#define 的用法是非常多功能的,它不止能实现常量宏定义,开关,还能实现函数
#undef 是取消宏定义 在undef后面要加上你要取消的宏定义 不想取消在后面可以瞎写但是不能为空
例子
#include "stdio.h"int main()
{#define max 50printf("%d\n",max);#undef maxprintf("%d\n",max); //运行报错
}
在这个 #define 到#undef 之间那个输出是没有问题的 但是后面那句就会输出报错 如果你不想取消可以下面这样做
#include "stdio.h"int main()
{#define max 50printf("%d\n",max);#undef aaaaa //undef 后面瞎写printf("%d\n",max);
}
这样你的宏就不会取消了,用法还是比较灵活的,比较适合项目的维护
#define 扩展用法(硬货)
直接上代码
#include "stdio.h"//利用宏定义实现调换函数 a,b值互换
#define swap(type,a,b) {type c=a;a=b;b=c;} //利用宏定义实现输出
#define print(x,y) printf(#x"=%d," #y"=%d \n",x,y) //#就是给x加上双引号 //利用宏定义实现字符串连接
#define conn(x,y) x##y //##是连接符 //定义宏开关
#define switch 1 //宏 1是开 0是关 int main()
{int a=10,b=20;char i[3]="123";if(switch) //宏开了里面才执行 关了就不执行 {swap(int,a,b); //利用宏换位 print(a,b);int n=conn(123,456);print(n,NULL); //偷懒为了方便这样写 } print(a,b);}
运行结果