内联函数:
1、对inline函数的处理发生在编译阶段,在调用点,把函数的代码直接展开,省去了函数栈帧的开销,代码运行效率高
2、会进行类型检查(编译阶段),比宏更安全
3、inline只在Release版本下才生效,即在debug版本下,inline和普通函数一样,也有栈帧的开辟和回退
4、debug下,可以进行调试
宏:
1、预编译阶段处理的,纯粹是字符替换
2、没有任何的类型检查,十分的不安全
3、用宏来代替函数定义,替换后还是一个正常的函数调用,有函数调用开销
4、代码无法调试
5、大量的宏很不方便去阅读代码,inline函数和普通函数一样,结构模块化清晰,方便阅读代码
inline函数和普通函数的区别:
inline:没有标准的函数栈帧的开辟与回退
普通函数有函数栈帧的开辟与回退
static:
相同:作用域相同,都是当前文件可使用
1、调用static函数时,有标准的函数栈帧的开辟与回退,inline则没有
2、符号的产生:
static函数会产生local的符号;inline不产生符号;普通函数产生global的符号