inline 内联函数和普通函数的区别:
1.inline内联函数:在编译过程中,就没有函数的调用开销了,在函数的调用点直接把函数的代码进行展开处理
2.inline 函数不再生成相应的函数符号
int sum(int x, int y) //*.o. sum_int_int .text
{
return x + y;
}
int main()
{
int a = 10;
int b = 20;
int ret = sum(a,b);
//此处有标准的函数调用 参数压栈,函数栈帧的开辟和回退过程,有函数调用的开销
return 0;
}
inline int sum(int x , int y)
{
return x + y;
}
int main()
{
int a = 10;
int b = 20;
int ret = a + b;
//内联函数直接展开了
return 0;
}
但是不是所有的 inline都会被编译器处理成内联函数,比如说递归就不行
注意:inline之时建议编译器把这个函数处理成内联函数,这个最后还是编译器决定的
debug版本上,inline 是不起作用的,inline只有在release版本下 才能出现