1、内联函数
内联函数(又被称为在线函数或编译时期展开函数)是指在用inline
修饰的函数(这里指的是C++
或者C
语言的函数)。
2、与普通函数的区别
我们都知道函数不管是OC
还是C/C++
最终都需要编译成汇编指令,才能真正执行。普通函数在被调用的时候需要CPU
执行CALL
指令不同(需要完成程序计数器压栈->执行要执行的函数语句->出栈程序计数器),内联函数不需要这个调用过程,内联函数在编译的时候,会直接在需要执行内联函数的地方(普通函数执行CALL
的汇编语句处)将内联函数的汇编片段copy一份并插入到此处,代替CALL
指令(类似于宏定义),而不需要普通函数的CALL
指令调用过程。因此内联函数的执行效率是比较高的,但是由于copy
代码片段,需要内存消耗,所以内联函数是一种以空间换时间的方法。
3、与宏定义的区别
宏定义只是简单的字符串替换,是不能做类型检查,内联函数相比而言就会更加安全
4、内联函数使用的注意项
内联函数通常都是比较简单的代码片段,不能包含循环,递归(递归函数的内联扩展可能引起部分编译器的无穷编译)等的复杂流程,代码最好不要超过5行
5、推荐使用内联函数代替宏定义
YYKit
,AFNetworking
等一些优秀的三方框架中就有大量的静态(文件内使用)内联函数使用static inline
网友评论