只测试过Ubuntu gcc,其他未测试。
1、inline 函数
在Ubuntu 16.04.2 LTS 上gcc无法编译通过,显示undefined reference to `print',print是定义的 inline函数。
inline在gcc中实际情况是:
a.对于同一个文件来说,inline函数相对于extern函数是建议编译器内联展开;
b.编译器一定会为该inline函数生成独立汇编代码,让外部文件调用该汇编代码,而不是让外部文件内联展开;
c.inline函数是全局的,即和普通extern函数全局属性类似;
d.实际测试:当外部文件中有同名的非inline函数时,重定义错误;只定义inline函数会有undefined reference错误;
2、static inline函数
a.本地调用时建议编译器内联展开;
b.编译器一般不会为static inline函数生成独立的汇编代