C++中的内联函数与宏

内联函数旨在减少函数调用开销,通过代码展开节省空间,但可能导致代码冗余和递归内存问题。宏在预处理阶段替换命令,不进行类型检查,而内联函数则提供类型安全。编译器会决定是否内联,尽管类成员函数默认内联,使用inline需谨慎。
摘要由CSDN通过智能技术生成

内联函数与宏

在这里插入图片描述

内联函数有什么作用?存不存在什么缺点?

  • 首先在程序运行过程中调用一个函数时,需要先将当前状态保存,将参数入栈,函数结束后出栈恢复状态等等开销,而内联函数的作用就是节省这些开销。
  • 内联函数就是让编译器在函数调用的地方,直接将函数的代码展开,就地计算,而不是开辟栈空间调用函数,这样就可以避免函数调用的开销,但是内联函数会在每一个函数调用的地方都展开,这样也就会有很多的代码冗余,也就是会造成代码膨胀,尤其是递归的函数,会有大量内存的开销,本质上就是一个用空间换时间的手段。
  • 但是实际上我们在函数前的inline声明也只是对编译器的建议,编译器会自己判断函数是否复杂是否应该内联,甚至其实类中的成员函数都是默认内联的,只有在类外定义才需要我们加上inline,借侯捷老师的话就是,直接在每个函数前面都加上inline,把是否内联的问题交给编译器来解决。

内联函数和宏有什么区别,有了宏为什么还需要内联函数?

  • 宏是在预处理阶段对命令进行替换,而内联函数是在编译阶段在调用点展开
  • 也就是说宏命令不会进行类型检查的,可能会出现类型安全问题,而内联函数会进行类型检查。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值