C++[第二十一章]--内联函数

内联函数在编译时将函数体插入到调用处,减少调用开销,提升效率。它与宏的主要区别在于编译时机、类型检查和错误定位,内联函数提供更好的可读性和错误信息,但宏展开不涉及类型检查。适当使用内联函数可优化程序,但过大函数不宜内联以避免代码膨胀。
摘要由CSDN通过智能技术生成

内联函数

1、内联函数

如果一个函数是内联的,那么在编译时,编译器会把该函数的代码副本放置在每个调用该函数的地方。
对内联函数进行任何修改,都需要重新编译函数的所有客户端,因为编译器需要重新更换一次所有的代码,否则将会继续使用旧的函数。
如果想把一个函数定义为内联函数,则需要在函数名前面放置关键字 inline,在调用函数之前需要对函数进行定义。(尽量不要内联超过 10 行的函数)
如:

inline int Max(int x, int y)
{
   return (x > y)? x : y;
}

2、原理

内联函数的原理是在编译时将函数调用直接替换为函数体代码,这样可以减少函数调用的开销,提高程序的性能。
普通函数的调用是通过在函数栈上创建新的栈帧来实现的,栈帧包含函数参数、局部变量和返回地址等信息。这个过程会增加一定的开销,包括栈帧的创建和销毁、参数的压栈和出栈等。

3、和宏的区别

1、编译时机不同:内联函数是在编译阶段展开的,而宏是在预处理阶段展开的。
2、参数类型检查不同:内联函数会对参数进行类型检查,确保传入的参数类型正确。而宏则不会进行类型检查,只是简单地将宏展开。
3、可读性不同:内联函数的代码更加清晰易读,宏的代码相对比较难懂。
4、错误信息不同:如果内联函数存在错误,编译器可以给出明确的错误提示信息。而如果宏存在错误,编译器只能提示展开后的代码存在错误,不容易定位错误所在。
5、执行时间不同:内联函数的执行时间可能比宏稍微长一些,因为内联函数需要进行参数类型检查和函数调用等操作。但是,内联函数可以使用编译器的优化技术来减少这些开销,提高性能。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

起风就扬帆

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

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

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

打赏作者

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

抵扣说明:

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

余额充值