内联函数inline

一、什么是inline函数
定义:当编译器发现某段代码在调用inline函数时,它不是去调用该函数,而是将该函数的代码整段插入当前位置。
优点:省去了函数调用过程序程,加快运行速率。
缺点:每当代码调用内联函数,就需要在调用处直接插入一段该函数代码,所以程序的体积将增大。
拿生活现象比喻,就像电视坏了,通过电话找修理工来,你会嫌慢,于是干脆在家里养了一个修理工。这样当然是快了,不过,修理工住在你家可就要占地儿了。

二、inline 函数的声明或定义
简单一句话,在函数声明或定义前加一个 inline 修饰符
inline int max(int a, int b)
{
return (a>b)? a : b;
}

内联函数的本质是,节省时间但是消耗空间

三、内联函数使用规则
(1)一个函数自己可以调用自己,称为递归调用,含有递归调用的函数不能设置为inline函数
(2)使用了复杂流程控制语句:循环语句,switch语句,无法设置为inline函数
(3)inline增加体积的特性,建议inline函数内的代码很短小,不超过5行
(4)、inline仅做为一种“请求”,特定的情况下,编译器将不理会inline关键字,而强制让函数成为普通函数。出现这种情况,编译器会给出警告消息。

(5)、在你调用一个内联函数之前,这个函数一定要在之前有声明或已定义为inline,如果在前面声明为普通函数,而在调用代码后面才定义为一个inline函数,程序可以通过编译,但该函数没有实现inline。比如下面代码片段:
//函数一开始没有被声明为inline:
void foo();
//然后就有代码调用它:
foo();
//在调用后才有定义函数为inline:
inline void foo()
{
……
}
代码是的foo()函数最终没有实现inline;

(6)、为了调试方便,在程序处于调试阶段时,所有内联函数都不被实现。

三、使用内联函数时应注意以下几个问题:
(1) 在一个文件中定义的内联函数不能在另一个文件中使用。它们通常放在头文件中共享。
(2) 内联函数应该简洁,只有几个语句,如果语句较多,不适合于定义为内联函数。
(3) 内联函数体中,不能有循环语句、if语句或switch语句,否则,函数定义时即使有inline关键字,编译器也会把该函数作为非内联函数处理。 所以不是所有加上inline关键字的函数都能作为inline函数对待,系统将根据函数的大小来决定是否作为inline函数处理
(4) 内联函数要在函数被调用之前声明。关键字inline 必须与函数定义体放在一起才能使函数成为内联,仅将inline 放在函数声明前面不起任何作用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值