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(内联临时变量)