__forceinline 和内联用法
__forceinline and inline usage
当在 class 中使用 __forceinline 或内联时,我是否必须在 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 中,如果函数先前明确声明为 inline
、__inline
或 __forceinline
,则在 .cpp 文件中保留函数定义会在链接时导致 unresolved external symbol
错误。所以我想必须将函数定义放入header。这是有道理的,因为为了实际内联函数,它的 body 必须可用于编译器。
当在 class 中使用 __forceinline 或内联时,我是否必须在 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 中,如果函数先前明确声明为 inline
、__inline
或 __forceinline
,则在 .cpp 文件中保留函数定义会在链接时导致 unresolved external symbol
错误。所以我想必须将函数定义放入header。这是有道理的,因为为了实际内联函数,它的 body 必须可用于编译器。