2.6.6 内联函数

2013-10-07 15:29:16 · 作者: · 浏览: 87

2.6.6   内联函数

关键字inline在函数声明中用来请求将该函数以内联方式展开,也就是说,在每个调用该函数的地方插入该函数的实现代码,但编译器有时候因为各种原因会不能满足这种请求。内联函数(Inline Function)类似于宏扩展。当预处理器扩展一个宏时,它将用宏定义替换每个宏。当宏替换或函数扩展完成后,再执行程序,这样避免了函数调用的开销,程序可以更有效地执行。使用宏或内联函数的缺点是,如果函数很大,或很多地方都调用了这个函数,程序的可执行码将变得很大。

与通过预处理进行宏扩展不同,内联函数的扩展是通过编译器完成的。当预处理器扩展一个宏时,它只是进行简单的文本替换,而不考虑代码的语义。而编译器扩展内联函数时,就不得不考虑语义了,正因为这个原因,内联函数通常比宏更受欢迎。

Inline函数从声明开始到文件结束都是可见的。

例2-54演示了如何将例2-48中的swap函数改成内联函数。

例2-54

 
 
注意关键字inline出现在函数声明而不是函数定义部分。假设编译器接受以内联方式扩展swap函数的请求,对如下这行代码来说将不产生函数调用操作:
 
因为swap是内联函数,编译器用swap的实现代码来替代这一行代码: