2017-04-23 62 views
0

クラスの__forceinlineまたはinlineを使用する場合、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:

MSVCで
//some_class.hpp 
class some_class 
{ 
public: 
    __forceinline void some_function() { } 
    inline void other_function() { } 
}; 

答えて

1

.cppファイル内の関数定義は、関数が予め明示的inline__inline又は__forceinlineとして宣言された場合、リンクunresolved external symbolエラーが発生残し。だから、関数定義をヘッダに入れなければならないと思います。実際に関数をインライン化するためには、その本体がコンパイラで利用可能でなければならないので意味があります。

関連する問題