关于预定义


一、预定义

1.预定义符号

在这里插入图片描述

二、#define

1.定义标识符

语法: #define   name   stuff
例如:

#define MAX 100
这里就是定义标识符,一般要求全大写,代码将会在预编译阶段将所有的MAX统统替换为100通常情况下 在定义的时候是不将 ; 写在末尾的,避免带来不必要的麻烦。

2.定义宏

为什么要定义宏?
因为对于一些简单的函数,宏定义运行得更快,例如比较两个数的较大值
函数的写法

//函数的写法
int MAX(int x, int y)
{
	return x > y ? x : y;
}
int main()
{
	int a = 20;
	int b = 30;
	int c = MAX(a, b);
	printf("max=%d\n", c);
	return 0;
}
//宏定义的写法
#define MAX(X,Y)  (X)>(Y)?(X):(Y)
//注意:MAX后的括号必须紧挨着MAX,参数也尽量用括号括起来,因为宏定义后并不会进行运算而是进行替换,例如定义一个求一个数平方的宏定义
#define PF(X)  X*X,当输入的x=1+2时并不会输出9而是输出5
因为仅仅是完成替换而已1+2*1+2,所有当我们使用宏定义
的时候注意括号是否要加上,避免出现一些不必要的错误。
int main()
{
	int a = 20;
	int b = 30;
	int c = MAX(a, b);
	printf("%d\n", c);
	return 0;
}



三、宏定义的优劣

1.优点
不用担心数据的类型,宏是类型无关的,而函数是要对具体的类 型进行使用,
运行的速度也是要快于函数的,所以宏经常被使用在一些比较简单代码少的函数上。
2.劣势
宏是进行替换的所以当宏的代码比较多,而需要替换的总数偏多的时候就会使代码长度增加得太多。
宏是无法进行调试的。
宏是类型无关的,所以也就是不够严谨的。
宏会带来运算优先级的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值