内联函数为什么不能声明定义分离?
首先明确几点:
inline
关键字只给编译器提供建议,具体是否内联,全看编译器;
inline
关键字只作用在函数的定义处,不作用在函数的声明处;
inline
关键字起作用时,会导致在汇编阶段不会将函数的定义和地址写入符号表。
所以,当内联函数的声明定义分离进行编译时,由于在汇编阶段头文件会写入函数的声明和无效地址,源文件不会写入函数的定义和地址,最后符号汇总出来就只有函数的声明和无效地址。就会导致在链接阶段其它源文件调用该函数的地方找不到该函数的地址和定义。