作者:jicanmeng
时间:2014年11月27日
函数调用时,内部过程需要进行调用初始化、执行函数代码、调用后处理三步。当函数体较小且执行的功能比较简单时,这种函数调用方式的系统开销相对较大。为了解决这一问题,C++引入了内联函数(inline functions)的概念。程序调用内联函数时,将函数体的代码直接插入到调用处。这样可以减少程序的执行时间,但同时增加了代码的实际长度。内联函数在定义时,需要在函数的返回值类型前面加上inline关键字。
根据维基百科,C++,C99和GNU C都支持内联函数,然而1989 ANSI C,这个最被广泛使用的C标准却是不支持内联函数的。
示例程序如下:
#include <iostream> inline int min(int nX, int nY) { return nX > nY ? nY : nX; } int main() { using namespace std; cout << min(5, 6) << endl; cout << min(3, 2) << endl; return 0; }
经过编译器处理后,代码转换为下面的样子:
#include <iostream> inline int min(int nX, int nY) { return nX > nY ? nY : nX; } int main() { using namespace std; cout << (5 > 6 ? 6 : 5) << endl; cout << (3 > 2 ? 2 : 3) << endl; return 0; }
使用内联函数有一些限制:
内联函数一般是比较小的、经常被调用的、大多数可在一行写完的函数,并常用来代替带参数的宏定义。