inline 这个名称可以反映出它的工作方式,函数会在它所调用的位置上展开.这么做可以消除函数调用和返回所带来的开销(寄存器存储和恢复),而且,编译器会把调用函数的代码和函数本身放在一起进行优化,所以有进一步优化代码的可能.
不过这么做是有代价的,代码会变长,这也就意味着占用更多的内存空间或者占用更多的指令缓存.
内核开发者通常把那些对时间要求比较高,而本身长度又比较短的函数定义成内联函数.
内联函数必须在使用之前就定义好,否则编译器就没法把这个函数展开,实践中一般在头文件中定义内联函数.