__forceinline和内联使用

时间:2017-04-23 21:40:31

标签: c++ visual-c++ inlining

在类中使用__forceinline或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() { }
};

1 个答案:

答案 0 :(得分:1)

在MSVC中,.cpp文件中的离开函数定义在链接时会导致unresolved external symbol错误,如果函数先前已明确声明为inline__inline__forceinline。所以我想必须将函数定义放入标题中。这是有道理的,因为为了实际内联函数,它的主体必须可用于编译器。