C++ __forceinline和inline用法
在类内部使用_uforceinline或inline时,我是否必须在MSVC的头文件中包含定义?我听到不同的编译器对此有不同的看法 例1: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
//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文件中会导致未解析的外部符号
错误。所以我想我们必须把函数定义放在标题中。这是有意义的,因为为了实际内联函数,它的主体必须可供编译器使用