经过长期的学习,我们已经知道了函数的调用是需要建立栈帧的,那么在C语言中,如何实现一个函数,并且在调用时不建立栈帧呢?
答案是:使用宏函数;宏函数在预处理阶段就会进行展开,并不会建立栈帧;
但是宏有以下的缺点:
1.不能进行调试;
2.参数没有类型;
3.宏容易写错;
基于上面的这些缺点,C++就提出了内联函数这个概念,它几乎解决了宏的所有问题;
以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数调用建立栈帧的开销,内联函数提升程序运行的效率;
先来看看C语言转成汇编后调用函数是什么样子的:
int Add(int left, int right)
{
return left + right;
}
int main()
{
int ret = Add(1, 2