内敛函数(inline函数)
编译阶段,在代码的调用点直接将代码展开。
1.inline函数和static修饰的函数的区别
1、inline函数 没有开栈和清栈的开销
static 有
2、inline函数 在调用点直接代码展开
static 函数符号属性
2.inline函数和宏的区别
Inline 编译时在调用点将代码展开 有类型检查和安全检查
宏 预编译时在调用点将代码展开 没有
inline是一种更安全的宏
3.注意事项:
- 实现在.h文件下写在头文件,不会写在源文件下
- 只在release版本下生效
- 给编译器的一个建议 递归,循环,switch一定不会处理成inline
- 基于实现,不是声明。(在声明中定义内敛,系统不会处理)
4.Inline缺点:
以代码膨胀为代价 空间换时间(inline可以提高效率,为啥不把所有的函数都设为inline)
5.建议:
- 开栈的开销>执行的开销 建议为inline
- 开栈的开销<执行的开销 不建议为inline