#define 是宏定义
#define 的用法是非常多功能的,它不止能实现常量宏定义,开关,还能实现函数
#undef 是取消宏定义 在undef后面要加上你要取消的宏定义 不想取消在后面可以瞎写但是不能为空
例子
#include "stdio.h"
int main()
{
#define max 50
printf("%d\n",max);
#undef max
printf("%d\n",max); //运行报错
}
在这个 #define 到#undef 之间那个输出是没有问题的 但是后面那句就会输出报错 如果你不想取消可以下面这样做
#include "stdio.h"
int main()
{
#define max 50
printf("%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);
}
运行结果