宏函数和内联函数inline

本文介绍了内联函数和宏函数的特点,内联函数通过在调用处展开减少栈帧开销,适用于代码量小且频繁使用的场景;宏函数虽不占用堆栈,但无类型安全,内联函数以空间换时间以提高效率,编译器会自动优化。
摘要由CSDN通过智能技术生成

除了我们正常写的函数以外,还有两种特别的函数:内联函数和宏函数。

宏函数最大的优点就是不像普通函数那样占用堆栈。

内联函数格式就是在普通函数前面加个inline,调用的时候跟正常是一样的。

#define Add(x,y)((x)+(y))//宏函数

inline int Add(int a, int b){//内联函数
  int c = a+ b;
  return c;
}

int main(){
  int a = 10;
  int b = 20;
  cout << "d:" << Add(a, "abc”) << endl;
  return 0;
}

内联函数的作用:在函数调用的地方展开函数体,相当于变成一个宏函数,减少函数栈帧的开销,提升效率。

内联函数的使用场景:代码量小,频繁使用的小函数建议使用内联。而代码量大的函数,像有递归、循环的函数不宜使用内联,这种大函数就算你使用内联,编译器一般也会优化成普通函数。

与宏函数相比,内联函数有类型安全的检查。

内联函数以空间换时间,以代码复制为代价,减少堆栈使用,提高代码运行效率。

 inline对编译器而言,仅仅只是一个建议,编译器会自动优化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不吃鱼的羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值