2008-11-18 15 views
6

मैं यहां एक विरासत सी कोड संकलित कर रहा हूं और "इंटरफेस" नामक कई चर और संरचना सदस्य हैं, लेकिन वीसी -2008 एक्सप्रेस इनके बारे में शिकायत कर रहा है, क्या आप जानते हैं कि इसे कैसे अक्षम किया जाए?विज़ुअल सी ++ एक्सप्रेस 2008 पर इंटरफ़ेस कीवर्ड अक्षम कैसे करें?

मैंने कोड को केवल कोड के रूप में संकलित करने के लिए सेटिंग बदल दी हैं, लेकिन इस पर कोई प्रभाव नहीं है।

+0

क्या आप मूल एप्लिकेशन या .NET एक बनाने की कोशिश कर रहे हैं? –

+0

यह एक मूल व्यक्ति होना चाहिए। मैंने सभी सेटिंग्स को मूल के रूप में संकलित करने के लिए बदल दिया, लेकिन काम नहीं करता है। असल में इंटरफ़ेस कोई कीवर्ड नहीं है (यह आईडीई पर नीला है), लेकिन इसे # परिभाषित इंटरफ़ेस संरचना – bcsanches

उत्तर

4

जहां कीवर्ड इंटरफ़ेस प्रयोग किया जाता है एक

#define interface QQInterface 
अपने कोड से पहले

(जैसे। हेडर फाइल में) इस तरह से हर जगह हैं,, compilers "QQInterface" है, जो शब्द नहीं है देखता है। यदि सभी कोड में यह परिभाषित शामिल है, तो आपको कंपाइलर या लिंकर त्रुटियां नहीं मिलेंगी।

+1

के रूप में परिभाषित किया गया है, यह हेडर फ़ाइल की बजाय प्रोजेक्ट सेटिंग्स में # परिभाषित करने के बजाय बेहतर है। –

+1

मैंने अभी एक और शीर्षलेख बनाया है और इसे परियोजना पर शामिल करने के लिए मजबूर किया है। लेकिन, मैंने पाया कि एमएस ने पहले से ही यह किया है (# परिभाषित इंटरफ़ेस संरचना)।इसलिए मैंने बदल दिया: #ifdef इंटरफ़ेस #undef इंटरफ़ेस #endif इसने समस्या को हल किया। – bcsanches

1

"इंटरफेस" सी में कोई कीवर्ड नहीं होना चाहिए और न ही आईएसओ सी ++। यह C++ के लिए प्रबंधित एक्सटेंशन में एक कीवर्ड है, इसलिए, मुझे लगता है कि, कहीं भी आपके कॉन्फ़िगरेशन में आप .NET के लिए कोड बनाने के लिए कह रहे हैं। सुनिश्चित करें कि हर जगह "मूल कोड"

हालांकि, यह संभव है कि आप इसे एक्सप्रेस संस्करण में मूल कोड पर सेट न करें --- यह केवल अनुमान है, लेकिन यह एक्सप्रेस/मानक के एमएस पोजिशनिंग पर विचार करना उचित है/प्रो संस्करण।

अद्यतन: अंतिम पैराग्राफ को अनदेखा करें। MSFT का कहना है आप देशी Win32 VisualC++ एक्सप्रेस के साथ ऐप्लिकेशन बना सकते हैं कि: http://www.microsoft.com/express/vc/

4

आप यथोचित पोर्टेबल सी कोड संकलन करने की कोशिश कर रहे हैं, तो यह माइक्रोसॉफ्ट भाषा एक्सटेंशन (/ Za कमांड लाइन पर, विन्यास गुण> सी अक्षम करने के लायक हो सकता है/सी ++> वीएस में भाषा) और देखें कि कोड तब संकलित करता है या नहीं।

5

समस्या है कि एमएस #defines इंटरफ़ेस तो struct है कि

interface Name {...} 

कॉम C++ कोड में इस्तेमाल किया जा सकता है। (objbase.h: 199: #define interface __STRUCT__)

बस #undef interface windows.h ..

0

सहित के बाद मैं संयोजित करते समय सी ++ कोड जो एक dbus हेडर फाइल शामिल एक ऐसी ही समस्या का सामना करना पड़ा। चूंकि dbus में कई फ़ंक्शन हैं जहां यह "इंटरफ़ेस" का उपयोग I/P पैरामीटर नाम के रूप में करता है, जो C++ कीवर्ड होता है, मुझे निम्न त्रुटि मिली: error: expected ',' or '...' before 'struct'

जब मैं इस की कोशिश की:

#ifdef interface 
#undef interface 
#endif 

यह समस्या हल हो जाती। सुनिश्चित नहीं है कि डीबीस सी ++ बाध्यकारी का उपयोग करना बेहतर होगा। वैसे भी मैं डीबीस का उपयोग नहीं कर रहा था, बस डीबीस हेडर में से एक पर रिमोट निर्भर था, इस समाधान ने ठीक काम किया !!

+0

यह केवल तभी काम करेगा जब 'इंटरफ़ेस' को मैक्रो परिभाषित किया गया हो। यदि यह एक कंपाइलर कीवर्ड है, तो यह नहीं होगा। – Mysticial

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