2012-01-17 19 views
5

CodeBlocks/MinGW ile derlemeye çalıştığım bazı Microsoft kodum (XLCALL.CPP) var. Bu hatta
Ben bir derleme zamanı hatası alıyorum:__forceinline satır içi nasıl?

__forceinline void FetchExcel12EntryPt(void) 

Bu hata mesajı alıyorum edilir:

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

__forceinline dile Microsoft özgü ektir, bu hata, beklenen, GCC tarafından tanınmıyor.

Yani, işler derlemek almak için, ben (/ Derleyici Ayarları/# tanımlayan Proje Seçenekleri kurmak) thiese codeblocks içinde tanımlar eklemeyi deneyin:
#define __forceinline inline 
#define __forceinline 

Ancak hala aynı hatayı alıyorum. iletişim Ben #define önişlemci komutu belirtmezseniz

(yani: __forceinline inline):

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

olmadan kod, böyle bir parça derlemek için bir yolu var mı, bu ne alıyorum Visual C++ kullanarak?

+0

Bu, sözdizimi gibi görünüyor: '__forceinline = inline' –

cevap

9

Sözdiziminde belirtildiği gibi, bu ayarlar -D options to GCC'a dönüştürüldüğünden, sözdizimi __forceinline=inline söz konusudur.

Not: inline, GCC'nin güçlü bir ipucu olduğunu ve işlevin satır içinde belirtilmesi gerektiğini, ancak garanti etmediğini unutmayın. __forceinline'un GCC eşdeğeri always_inline attribute - örn. Bu kod:

#define __forceinline __attribute__((always_inline)) 

veya eşdeğer bu ayarı:

__forceinline="__attribute__((always_inline))" 

(Ama bu iyi gereksiz olabilir: MSVC ile derlerken satır içine yerleştirilmiş için bu fonksiyonu zorlayarak için bazı özellikle iyi bir neden olup olmadığını , bu nedenle tamamen farklı bir derleyici kullanırken geçerli olmayabilir!)