定义在头文件里的class之内的函数默认是inline的。
https://stackoverflow.com/questions/66528686/basic-odr-violation-member-functions-in-h-files
MSVC有个专用属性__declspec(selectany)来解决定义在头文件里的class之外的变量和函数的冲突
gcc/clang也有__attribute__((selectany))
也就是如果某人非要在.h里写一个独立函数体或者写个不带extern的全局变量(静态成员变量也一样),那可以加上selectany属性(函数可以加上inline,变量没法加inline,只能加selectany)
a.h:
class CMyClass{
private:
static int m_static;
}
__declspec(selectany) int CMyClass::m_static = 0;
--
修改:z16166 FROM 114.241.227.*
FROM 114.241.227.*