内联函数:
内联函数把函数编译好的二进制指令直接复制到函数的调用位置。
内联函数的优点是:能够提高程序的运行速度,但这样会导致可执行文件冗余,因为是牺牲空间来换取时间
内联函数分为显示内联和隐式内联:
显示:在函数前加inline
隐式:在结构、类中直接定义的成员函数,则该函数也被自动优化成内联函数
宏函数与内联函数的区别?
1、宏函数不是真正的函数,只是代码的一个替换,因此不会有参数压栈、出栈以及返回值,也不会进行参数的类型检查,因此所有类型都可以使用,但这样会带来很大的安全隐患。
而内联函数是真正的函数,函数调用时会进行传参,会进行压栈、出栈,可以有返回值,并进行严格检查参数类型,但这样就不能通用所有类型,如果想被多种类型调用需要重载
2、内联函数是在编译时展开,而宏函数在预编译时展开,在编译的时候,内联函数直接被嵌入到目标代码中去,而宏函数只是一个简单的文本替换过程
3、宏在定义时要小心处理宏参数,一般用括号括起来,否则会出现二义性,而内联函数不会出现二义性
4、inline有点类似于宏定义,但是它和宏定义不同的是,宏定义只是简单的文本替换,是在预编译阶段进行的,而inline的引入正是为了取消这种复杂的宏定义的。