本博文由 西北工业大学MOOC 总结而来,以备以后回顾。
内联函数
1.什么是内联函数
内联函数:在编译时将被调函数的代码直接嵌入到主调函数中,取消调用这个环节,这种嵌入到主调函数中的函数称为内联函数。
2.内联函数的定义
内联函数的声明是在函数定义的类型前加上 inline 修饰符,定义形式为:
inline 返回类型 函数名(形参列表)
{
函数体
}
注意:
1)inline的使用是有所限制的,inline只适合涵数体内代码简单的涵数使用,不能包含复杂的结构控制语句例如while、switch,并且不能内联函数本身不能是直接递归函数(自己内部还调用自己的函数)。
2)内联函数的声明必须出现在内联函数第一次被调用之前。
3.内联函数的实例
内联函数在调用时就已经被替换成子函数的内容,即 fun(5, 6) 编译时替换成 5x5+6x6,效率更高。
内联函数实际上是将用到 fun(a, b) 的地方全部替换成了 aa+bb。这样就避免了频繁调用函数对栈内存重复开辟所带来的消耗。
inline函数仅仅是一个建议,对编译器的建议。所以最后能否真正内联,看编译器的意思,编译器如果认为函数不复杂,能在调用点展开,就会真正内联。所以并不是说声明了内联就会内联,声明内联只是一个建议而已。