预处理指令:#define


enum给整数命名,typedef给类型命名,宏给一切重命名
本质:单纯的替换

写法

#define x y

常量宏

#define ONE 1// one替换成1
#define TWO 1+2*5//宏不进行任何计算,直接把1+2*5替换
#define PRINTF printf("%d %d\n", ONE,TWO);//PRINTF替换成后面的
//一般用大写定义

int main(void)
{

	PRINTF
	//printf("%d\n", ONE);
	//printf("%d\n", two);
	system("pause");
		return 0;
}

也可以


#define PRINTF printf("%d %d\n", ONE//PRINTF替换成后面的

int main(void)
{

	PRINTF,TWO);//一样可以执行
	system("pause");
		return 0;
}

本质就是替换

定义空宏


#define THREE

int main(void)
{
THREE
	system("pause");
		return 0;
}

宏也可以当宏的本体

#define ONE 1
#define ONEONE ONE

为了严谨应该在定义时候加括号#define THREE (1+1)

#define THREE 1+1

int main(void)
{
	printf("%d", 2 * THREE);//2*1+1=3

参数宏

#define PRINTF(x) printf("%d\n",x);//被替换成printf("%d\n",x);
#define SUM(x,y) ((x)+(y))//一定要加括号
#define MUL(x,y) (x)*(y)
int main(void)

{
PRINTF(12);
	printf("%d\n",SUM(2,8)*3);
	printf("%d", MUL(2, 8));
	system("pause");
		return 0;
}

找最大

#define MYMAX(x,y) ((x)>(y)?x:y)
int main(void)

{
	printf("%d\n", MYMAX(3,5));
	system("pause");
	return 0;
}

特殊符号

\,拼接作用

#define THREE  printf("asd")\
printf("qwe");

#作用:把传进来的东西解释成字符串

#define NUM(x) #x
##作用:字符串拼接

#define ONE(x,y) #x ## #y
printf("%s",ONE(123,qwe));
输出123qwe
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值