宏和内联函数的区别及优缺点

内联函数(#define)/宏定义(#define)

1.宏是由预处理器对宏进行替代;而内联函数是通过编译器控制来实现的

2.宏定义只是简单的文本替换,内联函数直接被嵌入到目标代码中去

3.宏定义不是真正的函数,没有参数类型检查,不安全;而内联函数是真正的函数,有类型检查,更为安全

5.宏在定义是要注意参数,一般用括号括起来,否则容易出现二义性,而内联函数不会出现二义性

两数比大小为例子来看内联函数和宏

宏的优点:

1.提高程序可读性,方便进行修改

2.使用带参数的宏定义既可以完成函数调用的功能,又可以避免函数的出栈入栈操作,减少系统开销,提高运行效率

3.宏是由预处理器处理的,通过字符串操作可以完成很多编译器无法实现的功能,比如##连接符

缺点:

1.不能访问私有成员

2.宏的定义容易产生二义性

3.宏定义没有参数检查不安全

内联函数的优点:

1.直接将代码插入调用处,减少普通函数调用时的资源消耗

2.有参数检测更安全

3.inline关键字只是对编译器的一个定义,如果函数不符合内联函数的标准,编译器就会把这个函数当成普通函数

缺点:

1.内联函数以复制为代价,活动产生开销

2.如果函数代码过长,使用内联函数会消耗过多内存

3.如果内联函数体有循环,执行函数代码时间调用开销大

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值