(一)inline函数
又称为内联函数,若一个函数被指定为 inline 函数 则它将在程序编译阶段,在每个调用点上被内联地展开 。
在函数声明或定义中的函数返回类型前加上关键字inline,即把函数指定为inline。
(二)inline函数和static修饰的函数的区别
1.inline 无开栈清栈开销
static 有
2.inline 编译阶段调用点代码展开
static 函数符号 l
3.inline 属性为 global
static生成函数符号为 local
(三)inline函数和宏的区别
1.inline 在编译阶段,会进行类型检查、安全检查
宏 在预编译阶段,不会进行检查,只是进行简单的替换。
2.inline是一种更安全的宏
(四) 注意事项
1.inline函数实现在.h文件
2.inline只在Release版本生效,在Debug版本不生效
3.给编译器的一个建议 比如当函数是以递归、循环、switch就无法替换。
4.基于实现 不是基于声明
缺点:
以代码膨胀为代价 空间换时间
建议:
1.开栈的开销 > 执行的开销 建议写成inline
2.开栈的开销 < 执行的开销 不建议