1 内联函数与普通函数的区别?
1 内联函数;在编译过程中,就没有函数调用开销。在函数的调用点直接将函数的代码进行展开处理
从指令角度掌握函数调用堆栈详细过程_LIJIWEI0611的博客-CSDN博客
中知道,在调用函数的过程中:
(1)将函数实数从右向左压栈
(2)call指令:
- 将下一行要执行的代码地址入栈
- 跳转到函数入口:首先push ebp,将栈底指针入栈,然后给函数开辟栈帧
函数执行结束后,栈帧回退。
在函数调用中,有大量的函数调用开销。如果封装的函数内容简单,函数调用的开销大于函数指令的执行时间,那么就可以使用内联函数(需要大量调用,且指令简单)。在调用点展开内联函数指令
2 内联函数不在生成相应的函数符号
3 inline 只是建议编译器把这个函数处理成内联函数,具体会由编译器处理觉得是否展开成内联函数。
注意:
(1)如果用vs调试Debug,不会将函数展开成内联.release版本可以。