[C++]内联函数

内联函数

一般情况下,函数在调用过程中需要进行一些准备工作,比如参数入栈,局部量保存,代码跳转等。调用返回时需要恢复现场。函数值返回,执行流程返回的调用前的下一条语句,这些都需要消耗一定的时间和空间。在一些时间效率要求高加上调用频率频繁的情形下,可以使用内联函数的方式来提高执行效率。
内联函数指定编译器处理函数调用的方式。从代码角度上看,内联函数有函数的结构,而在编译后,却不具备函数的性质。内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处。编译时类似宏替换,内联函数使用函数体替换调用处的函数名。一般情况下,用inline放在函数名前表示内联函数。

/*内联函数使用*/
#include <iostream>
using namespace std;
inline int abs(int);//声明内联函数
int main(void)
{
    int i = -10,m;
    m = abs(i);
    cout<<"absolute value ="<<m<<endl;
    return 0;
}
inline int abs(int a)//定义abs为内联函数
{
    if(a>0){
        return a;
    }else{
        return -a;
    }
}

由于在定义函数时指定它为内置函数,因此编译系统在遇到函数调用"abs(i)“时,就用abs()函数体的代码替换掉"abs(i)”,同时将实参代替形参。原来函数第7行"m = abs(i)"被等价置换成 m = a>0?a:-a;

注意
(1) 递归函数不能定义为内联函数
(2) 内联函数一般适合于不存在while和switch等复杂的结构函数上,否则编译系统将该函数视为普通函数处理。
(3) 内联函数只能先定义,后使用,否则编译系统也会把它认为普通函数。
(4) 对内联函数不能进行异常的接口声明。
(5)编译器不保证inline修饰的函数一定会作为内联函数处理,一般结构简单,语句少的函数定义成内联函数才会得到编译器的认可。同时,没有用inline修饰的,结构简单的函数也可能被编译成内联函数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值