最大的区别是内联函数避免了普通函数调用的开销,因为普通函数调用之前要做三件事:
1)将所有实参、返回地址等信息传给被调用函数保存
2)为被调用函数的局部变量分配空间
3)将控制转移到被调用函数的入口
从被调用函数返回主调函数前系统也必须完成三件事:
1)保存被调用函数的计算结果(比如return返回的)
2)释放被调函数的数据区
3)依据被调函数保存的返回地址将控制权转移到调用函数
上面两个步骤有时候分别称为“保护现场”和“恢复现场”,因为不少书上是这么称呼的。知道了这些就不难理解对于小规模函数为什么inline优于普通函数了,因为节省了普通函数调用的开销(overhead)。overhead这个词大家以后也会经常看到。请记住:inline的特点就是编译器把函数体在调用的地方直接“展开”!这点极其类似于宏,只是后者是预处理器来进行替换的,且inline的安全性优于macro。

