- 对于C函数的扩展
内联函数是C++为提高程序运行速度所做的一项改进.常规函数和内联函数的主要区别不在于编写方式,而在于C++编译器如何将它们组合到程序中. - 常规函数
程序运行时,操作系统将机器语言指令载入到内存中,因此每条指令都有特定的内存地址.计算机逐步执行这些指令.
在执行常规函数调用指令时,程序将在函数调用后立即存储该指令的内存地址,并将函数参数复制到堆栈(为此保留的内存块),跳到标记函数起点的内存单元,执行函数代码(也许还需将返回值放入到寄存器中),然后回到地址被保存的指定处,来回跳跃并记录跳跃位置意味着使用函数时,需要一定的开销 - 内联函数
内联函数的编译代码与其它程序代码"内联"起来,编译器将使用相应的函数代码代替函数调用,程序无需来回跳跃执行,运行速度比常规函数稍快,但是占用更多内存.
图见C++ Primer Plus(第6版) 内联函数
#include <iostream>
using namespace std;
#define MAX_MACRO(x,y) ((x) > (y) ? (x) : (y))
inline int max_inline(int a, int b)
{
return a > b ? a : b;
}
int main()
{
cout << max_inline(1, 2) << endl;
cout << MAX_MACRO(1, 2) << endl;
return 0;
}
内联函数由编译器处理,与常规函数一样按值传递参数,而宏定义由预处理器处理只是进行简单的文本替换,如果使用C语言的宏执行了类似函数的功能,应该考虑将它们转换为C++内联函数