内联函数和普通函数的区别:
1、在编译过程中,内联函数在函数的调用点,把函数代码全部展开,所以没有标准函数的栈帧的开辟和回退。
(如果 调用函数的开销 > 函数执行的开销,那么就建议写为内联函数 )
调用的开销:函数的栈帧的开辟和回退
执行的开销:函数体内代码执行的开销
2、内联函数只在本文件可见,编译阶段就进行了替换,所以不产生符号,所以一般在头文件中定义,这样就可以在其它文件调用。普通函数产生符号,多个文件引用头文件,会产生符号重定义的错误。
.编译阶段不编译.h文件,只编译.c 或.cpp 文件
注意:inline只在release版本起作用,debug版本inline函数也需要栈帧的开辟和回退