坚持看完,结尾有思维导图总结
内联函数
C语言中 有一个比较独特的存在,就是宏
但是宏有一些不足
传参没有类型的检查,导致不是很安全
宏的使用是直接进行替换
而且还不能调试
如果我们要写一个相加的宏
会发现,如果少了几对括号,就会导致运算出错,因为是直接替换,就会有运算符匹配(结合性)的问题
祖师爷发现,这个鬼东西又不是很安全,用起来又别扭
就在普通函数的位置上加了 inline 的内联函数
inline 会做什么呢?
编译器看到 inline ,会选择将函数调用的地方,在可执行文件直接替换为对应的汇编指令,而不是开辟栈帧来实现函数的调用
调用后来显示反汇编
内联前(加 inline 前)
内联后(vs 2019 直接优化了,我有点不太懂)
本来