C++ __forceinline和inline用法

C++ __forceinline和inline用法,c++,visual-c++,inlining,C++,Visual C++,Inlining,在类内部使用_uforceinline或inline时,我是否必须在MSVC的头文件中包含定义?我听到不同的编译器对此有不同的看法 例1: //some_class.hpp class some_class { public: __forceinline void some_function(); inline void other_function(); }; //some_class.cpp void some_class::some_function() { } void s

在类内部使用_uforceinline或inline时,我是否必须在MSVC的头文件中包含定义?我听到不同的编译器对此有不同的看法

例1:

//some_class.hpp
class some_class
{
public:
   __forceinline void some_function();
   inline void other_function();
};

//some_class.cpp
void some_class::some_function() { }
void some_class::other_function() { }
例2:

//some_class.hpp
class some_class
{
public:
   __forceinline void some_function() { }
   inline void other_function() { }
};

在MSVC中,如果函数先前明确声明为
内联
\uuuuuuu内联
\uuuuuu forceinline
,则在链接时,将函数定义保留在.cpp文件中会导致
未解析的外部符号
错误。所以我想我们必须把函数定义放在标题中。这是有意义的,因为为了实际内联函数,它的主体必须可供编译器使用