2012-01-17 26 views
5

मेरे पास कुछ माइक्रोसॉफ्ट कोड (एक्सएलकॉल.सीपीपी) है जिसे मैं कोडब्लॉक्स/मिनजीडब्ल्यू के साथ संकलित करने की कोशिश कर रहा हूं।
इस लाइन पर मैं एक संकलन समय त्रुटि मिलती है:# ____forceinline इनलाइन कैसे परिभाषित करें?

__forceinline void FetchExcel12EntryPt(void) 

यह है त्रुटि संदेश मैं:

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

यह त्रुटि की उम्मीद है, क्योंकि __forceinline भाषा के लिए किसी Microsoft विशिष्ट है, जीसीसी द्वारा मान्यता प्राप्त नहीं है।

तो, बातें संकलन प्राप्त करने के लिए, मैं जोड़ने के लिए thiese codeblocks में परिभाषित करता है (परियोजना विकल्प का निर्माण/संकलक सेटिंग्स/# को परिभाषित करता है) की कोशिश:

#define __forceinline inline 
#define __forceinline 

हालांकि मैं अभी भी एक ही त्रुटि मिलती है।

संवाद में मैं #define पूर्वप्रक्रमक आदेश निर्दिष्ट नहीं करते हैं (यानी: __forceinline inline):

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

वहाँ के बिना कोड, के इस तरह के एक टुकड़े को संकलित करने का कोई तरीका है, यह मैं क्या मिलता है विज़ुअल सी ++ का उपयोग कर?

+0

ऐसा लगता है कि यह वाक्यविन्यास है: '__forceinline = inline' –

उत्तर

9

वाक्यविन्यास __forceinline=inline है, जैसा कि आपने टिप्पणियों में नोट किया है, क्योंकि ये सेटिंग्स -D options to GCC में बदल दी गई हैं।

ध्यान दें कि inline जीसीसी को एक मजबूत संकेत है कि फ़ंक्शन को रेखांकित किया जाना चाहिए, लेकिन इसकी गारंटी नहीं है। __forceinline का जीसीसी समतुल्य always_inline attribute है - उदा। इस कोड:

#define __forceinline __attribute__((always_inline)) 

या समतुल्य इस सेटिंग:

__forceinline="__attribute__((always_inline))" 

(लेकिन यह अच्छी तरह से अनावश्यक हो सकता है: अगर वहाँ के लिए मजबूर कर इस समारोह के लिए कुछ विशेष रूप से अच्छा कारण जब MSVC के साथ संकलन inlined किया जाना था , एक कारण पूरी तरह से अलग संकलक का उपयोग करते समय यह कारण मान्य नहीं हो सकता है!)

संबंधित मुद्दे