2017-04-23 49 views
0

当使用__forceinline或内联内部类型时,是否必须在MSVC中包含头文件中的定义?我听到了这个不同的意见,通过不同的编译器有所不同。__forceinline和内联使用

实施例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

在MSVC留下cpp文件函数定义使得在连接时,如果功能以前显式声明为inline__inline__forceinlineunresolved external symbol错误。所以我想我们必须把函数定义放入头文件中。这是有道理的,因为为了实际内联函数,它的正文必须可用于编译器。