C++基础-inline内联函数

/*
inline内联函数 和 普通函数区别
inline内联函数:
	在编译过程中,就没有函数的调用开销了,
	在函数的调用点直接把函数的代码进行展开处理了
	
	inline只是建议编译器把这个函数处理成内联函数
	但不是所有inline都会被编译器处理成内联函数 - 递归
	如果代码量非常的大也不会展开处理

	inline函数不再生成相应的函数符号

	debug版本 inline不起作用,只在release才能出现

*/

//多次函数调用开销 可能会远远大于函数本身的指令执行时间	
//此时可使用内联函数
inline int sum(int a=10, int b=20)
{
	return a+b;
}

int main(int argc, char const *argv[])
{
	int a = 10;
	int b = 20;
	int ret = sum(a,b); // 等同于a + b;
	//标准函数的调用过程:参数压栈、函数栈帧的开辟和回退过程
	//调用函数 x+y:  mov -> add -> mov

	return 0;
}

总结:

  1. inline内联函数在编译过程中,没有普通函数的调用开销,在函数的调用点直接把函数的代码进行展开处理了
  2. inline只是建议编译器把该函数处理成内联函数,但不是所有inline都会被编译器处理成内联函数(例如递归);如果代码量非常的大也不会展开处理。
  3. inline函数不再生成相应的函数符号(*.o sum_int_int .text)
  4. debug版本 inline不起作用,只在release才能出现
posted @ 2022-07-13 14:00  言叶以上  阅读(20)  评论(0编辑  收藏  举报