内联的优缺点

来源:互联网 发布:php网站源码带数据库 编辑:程序博客网 时间:2024/06/05 08:08

定义和机制

内联函数是指用inline关键字修饰的函数。在类内定义的函数被默认成内联函数。内联函数从源代码层看,有函数的结构,而在编译后,却不具备函数的性质。
内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处。编译时,类似宏替换,使用函数体替换调用处的函数名。一般在代码中用inline修饰,但是能否形成内联函数,需要看编译器对该函数定义的具体处理。

优点

1、内联函数,编译器将会根据上下文环境进一步深度优化代码,而这一点是普通函数无法达到的作用
2、省略了函数调用压入堆栈和弹出堆栈所用的时间
3、常用于高频使用的函数,可以提高时间

缺点

1、编译之后代码量会偏多,内联可以说是一种以空间换取时间的方法。牺牲一定的空间来加速运行时间。增加的代码量取决于函数调用次数和函数本身的大小
2、内联函数实现的更改往往并不可以保持链接兼容性,也就是说这样的更改需要用户重新编译他们的代码

综述与注意

1、inline实现其实就是对编译器的一种请求,因此编译器完全有权利取消一个函数的内联请求。一个好的编译器会根据函数定义体,自动取消不值得的内联,一般编译器会自动过滤选择一些短小而简单的函数来内联
2、使用内联函数的时候要注意:
(1)递归函数不能定义为内联函数
(2)内联函数一般适合于不存在while和switch等复杂的结构且只有1~5条语句的小函数上,否则编译系统将该函数视为普通函数。
(3)内联函数只能先定义后使用,否则编译系统也会把它认为是普通函数。
(4)对内联函数不能进行异常的接口声明。

原创粉丝点击