宏和函数的区别

宏非常频繁的运用于执行简单的计算。

那么,为什么不用函数呢?

1.宏在使用时比函数在程序的规模和速度更胜一筹。

2.函数的参数必须申明为一个特定的类型,于是它只能在类型合适的表达式使用。而宏为无类型替换。

而有些情况只能用宏,就是按类型申请空间时。

如:

#define MALLOC(n,type)\
	((*type)malloc ((n)*sizeof(type)));

//调用时
    int *p = MALLOC (25,int);


但,宏也有缺点:  一份宏定义代码的拷贝将插入到程序中,除非宏非常短,否则使用宏可能会大幅度增加程序长度。

还有宏的副作用,如以下程序在比较时,会出现问题:

#include <stdio.h>
#include <Windows.h>

#define MAX(x,y) ((x)>(y) ? (x) : (y))

int main()
{
	int a = 4;
	int b = 9;
	int c = 0;
	c=MAX(a++,b++);
	printf("a=%d b=%d c=%d\n",a,b,c);
	system("pause");
	return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值