2012-01-17 2 views
5

CodeBlocks/MinGW로 컴파일하려고하는 일부 Microsoft 코드 (XLCALL.CPP)가 있습니다. 이 라인에서
내가 컴파일 시간 오류 얻을 :인라인을 #define __forceinline하는 방법은 무엇입니까?

__forceinline void FetchExcel12EntryPt(void) 

를이 오류 메시지 내가 얻을 수있다 :

XLCALL.CPP|36|error: expected constructor, destructor, or type conversion before 'void'

__forceinline 언어에 마이크로 소프트 특정 또한이기 때문에이 오류가 예상되고, GCC에 의해 인정되지 않는다.

그래서, 일이 컴파일 얻을, 나는 (/ 컴파일러 설정/#이 정의 프로젝트 빌드 옵션) thiese가 CodeBlocks에서 정의 추가하려고 :
#define __forceinline inline 
#define __forceinline 

그러나 나는 여전히 같은 오류가 발생합니다. 대화 상자에서 내가 마치 #define 전처리 명령을 지정하지 않은 경우

(예 : __forceinline inline를)

XLCALL.CPP|36|error: expected unqualified-id before numeric constant

없이 코드, 같은 조각을 컴파일 할 수있는 방법이 있나요이 내가 무엇을 얻을 Visual C++를 사용하고 있습니까?

+0

구문은 다음과 같습니다. '__forceinline = inline' –

답변

9

이 설정은 -D options to GCC으로 바뀌기 때문에 주석에서 설명한대로 __forceinline=inline입니다.

inline은 함수가 인라인되어야한다는 GCC의 강력한 힌트이지만이를 보장하지는 않습니다. __forceinline에 해당하는 GCC는 always_inline attribute입니다. 이 코드 :

#define __forceinline __attribute__((always_inline)) 

또는 동등이 설정 :

__forceinline="__attribute__((always_inline))" 

(하지만이 잘 불필요 할 수 있습니다 MSVC로 컴파일 할 때 인라인 할이 기능을 강제 일부 특히 좋은 이유가 있다면 그 이유는 완전히 다른 컴파일러를 사용할 때 유효하지 않을 수 있습니다!)

관련 문제