__forceinline和内联用法

__forceinline and inline usage

本文关键字:用法 forceinline      更新时间:2023-10-16

使用__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() { }
};

在.cpp文件中,在MSVC中留下函数定义会导致 unresolved external symbol链接时链接if function先前已明确声明为 inline__inline__forceinline。因此,我想一个人必须将功能定义放入标题。这是有道理的,因为为了实际内联功能,它的主体必须可用于编译器。