2017-04-23 2 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

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

답변

1

.cpp 파일 함수 정의 함수는 이전에 명시 inline, __inline 또는 __forceinline로 선언 된 경우 연결 unresolved external symbol 오류가 발생 떠나는 . 그래서 나는 함수 정의를 헤더에 넣어야한다고 생각한다. 컴파일러가 실제로 함수를 인라이닝 (inline)하기 위해서는 컴파일러가 사용할 수 있어야합니다.