#define定义宏常量和宏函数

宏常量概念:

用#define指令,指定用一个符号名称代表一个常量;也称为符号常量。

例如:#define PI 3.1415 //注意行末没有分号
经过上述的指定后,本文件中从此行开始所有的PI都代表3.1415。在对程序进行编译前,预处理器先对PI进行宏展开,把所有的PI都替换成3.1415。这种用一个符号代表一个常量的,称为宏常量;

使用宏常量的好处:

  1. 含义清楚;看程序时从PI就可大致知道他代表圆周率。故应尽量使用“见名知意”的变量名或符号常量;
  2. 在需要修改程序中多处用到的同一个常量时,能做到一改全改;

注意事项:要区分宏常量和变量,不要把宏常量误认为变量。符号常量不占用内存,只是一个临时符号,代表一个值,在预处理后这个符号就不存在了,故不能对符号常量解析值。为和变量名区别开,习惯上符号常量用大写字母表示;

#include<stdio.h>
#define PI 3.1415

int main()
{
	int a = PI;
	printf("%f\n", a);
	return 0;
}

宏函数概念:

  • 宏函数和宏常量都是利用#define定义出来的内容
  • 在项目中,经常把一些短小而又频繁使用的函数写成宏函数
  • 这是由于宏函数没有普通函数参数压栈、跳转、出栈返回等时间上的开销,可以调高程序的效率。

注意事项: 宏函数通常需要加括号,保证运算的完整;宏函数不是真正的函数,是一种替换机制,所以操作符的优先级会影响宏的求值, 应尽量使用括号明确优先级

#define MYADD(x,y) ((x) + (y)) //宏函数
//普通函数下的a、b都要进行入栈,函数执行后出栈
int myAdd(int a ,int b)//普通函数
{
	return a + b;
}
//宏函数 在一定的场景下 要比普通的函数效率高,把频繁使用并且短小的函数 可以写成宏函数
//宏函数在编译阶段就替换源码  而没有普通函数入栈出栈的开销,以空间换时间
void test()
{
	int a = 10;
	int b = 20;
	printf("a + b = %d\n", MYADD(a, b)); // 直接替换((a) + (b))
}

总结:将使用频繁且短小的函数可以封装为宏函数,以空间换时间。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值