关于inline 导致链接失败!

来源:互联网 发布:mac开机有个客人用户 编辑:程序博客网 时间:2024/04/25 16:35

解决方案:

1) 函数实现放在.h文件里面,和函数声明在一起。
2) 函数实现前面加上 extern 关键字。

     在.cpp里的函数定义前加上extern,这会引发一个warning : 'extern' storage-class specifier illegal on member definition,可以用#pragma warning (disable : 4630)屏蔽之。

 

 

微软的理解:
inline的函数声明和实现必须在一起。如果inline的函数实现放在cpp里面,默认是internal链接属性。

这会导致在别的cpp文件里面调用inline函数链接失败。

 

和C++标准是一致的。

C++标准草案的说明:
"Functions that are declared as inline and that are not class member functions have internal linkage unless otherwise specified."
被声明为inline的非类成员函数,除非特别指定,默认具有internal链接属性。