inline内联函数

Posted binaryant

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了inline内联函数相关的知识,希望对你有一定的参考价值。

inline用于修饰函数。

ininle的作用是建议编译器简化函数调用开销,这也是inline的存在的意义

  语句被翻译成机器指令,CPU多执行一条机器指令,从执行数量的角度上来说,少肯定比多好。

int test(){

}
//这个函数什么功能都没,但是从编译的角度来看(这里有优化的情况...),这是会产生机器指令的。

 

 

 技术图片

 关于上段截图,选中蓝色部分,我利用VS2015做了测试,情况如下

 

技术图片

很明显都是采用了内联手段。

接着我又这样测试

  

int max(int a,int b){
  return a>b;      
}

结果还是同样的采用了内联手段。

回到文章开头,inline是对编译器建议,建议,建议。

甭管C语言实现规定了inline这样或那样,在VS中他就是这样。

试想你写自己编写一款编译器,从效率上来说,你难到不是想最大化优化程序的效率?

很明显VS2015就是这样干的,我不需要你们在代码中使用inline修饰函数,能用内联的全使用内联。所以你加不加关键字修饰真没什么意思。

 

总结:

  inline鸡助不需要花费时间去学习,原因是现在的编译器都已经智能的可以通过对函数的复杂度,判断使用或不使用内联。毕竟效率第一

  如果有朋友知道,现在编译器,不使用inline关键字就不优化的情况,请告诉我。

  过于复杂的代码是不能被内联的(递归)。

 

以上是关于inline内联函数的主要内容,如果未能解决你的问题,请参考以下文章

重构改善既有代码设计--重构手法02:Inline Method (内联函数)& 03: Inline Temp(内联临时变量)

函数内联inline

C++基础--inline

c++: inline_函数与内联函数(超详细)

函数内联 inline,__inline,__forceinline

C++ inline内联函数详解