1

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

1 回答 1

1

在 MSVC 中,unresolved external symbol如果函数先前显式声明为或inline,则在链接时将函数定义留在 .cpp 文件中会导致错误。所以我想必须将函数定义放入标题中。这是有道理的,因为为了真正内联函数,它的主体必须可供编译器使用。__inline__forceinline

于 2017-04-23T22:06:49.207 回答