内联函数是一种特殊的函数,具有函数的普通特征(参数检查,返回类型等)
要使用内联函数,必须采取以下措施之一:
1、在函数声明前加上关键字 inline
2、在函数定义前加上关键字 inline
内联函数的限制:
不能对函数进行取址操作、内联函数不能递归
内联函数和普通函数的区别:
1、内联函数和常规函数的区别不在于编写方式(除了要多使用一个关键字进行区分),而在与C++编译器将他们组合到程序中的方式。
2、内联函数在最终生成的代码中时没有定义的,在使用时,编译器直接将函数体插入到函数调用的地方,没有普通函数调用时的额外开销(压栈,跳转,返回)
3、内联函数相对于普通函数的优势只是省去了调用函数时候的开销。因此,当函数体执行的开销远大于调用的开销时,内联函数将无意义。(比如,一个有100行代码的函数体,在程序中总共调用了20次。使用内联函数的话,执行时就需要将100行代码复制20遍,很明显这样做是没有意义的)
内联函数和宏代码片段的区别:
内联函数由编译器处理,直接将编译后的函数体插入到调用的地方。(宏代码片段由预处理器处理,进行简单的文本替换,没有任何编译过程)
内联函数最终只是给编译器的一个请求,编译器可以拒绝内联请求,具体的情况会因为编译器的编译规则不同而略有差异。但是,现在编译器已经越来越智能,很多编译器都会有自己的编译优化规则(也可能没有自动优化),这个自动优化不会影响程序运行的结果,所以内联函数的使用视具体的情况而定。