2010-06-29 7 views
7

मुझे हाल ही में एक डीएल मिला है जिसे दूसरों द्वारा लागू किया गया है। मुझे इसे अपने आवेदन में उपयोग करना है। अपने वर्ग के हेडर फाइल में वे समारोह घोषणा"सी ++ अपवाद विनिर्देशन से अनदेखा कैसे करें" चेतावनी

void func1() throw (CCustomException); 

अब जब मैं संकलन यह चेतावनी हो रही है,

C++ अपवाद विनिर्देश एक समारोह इंगित करने के लिए छोड़कर पर ध्यान नहीं दिया है _declspec (नहीं है नोट्रो)

मैंने MSDN - Documentation पढ़ा लेकिन इसे स्पष्ट रूप से समझ नहीं सका। साथ ही, मैं चेतावनी को अक्षम नहीं करना चाहता क्योंकि यह दिखा रहा है। मैं जानना चाहता हूं कि इसे अक्षम करने के बजाय मैं क्या गलत कर रहा हूं।

मैं अपने समारोह में सोचा है, myfunc() कहना तक पहुँचने कि func1() dll से कि अपवाद विनिर्देश सूची नहीं है। इसलिए मैंने अपने कार्य में संबंधित अपवाद विनिर्देश सूची को भी

void myfunc1() throw (CCustomException); 

लेकिन मुझे अभी भी चेतावनी मिल रही है। यह चेतावनी क्या है और इससे छुटकारा पाने के लिए क्या है? मैं विंडोज एक्सपी में क्यूटी 4.5 का उपयोग कर रहा हूँ।

उत्तर

11

ठीक है, यह एक गैर-उत्तर है, लेकिन मैं throw away the exception specification and never use it again होगा।

संपादित करें: मैंने बहुत तेज़ पढ़ा है, और मैंने नहीं देखा कि आपने कक्षा को स्वयं नहीं लिखा है। सबसे अच्छा तरीका है के माध्यम से है #pragma चेतावनी (धक्का) MSVC में चेतावनी से छुटकारा पाने के #pragma चेतावनी के बाद (अक्षम: xxxx):

#ifdef _MSC_VER 
#pragma warning(push) 
#pragma warning(disable:xxxx) 
#endif 

... 

#ifdef _MSC_VER 
#pragma warning(pop) 
#endif 

संपादित करें: जहां xxxx चेतावनी कोड है यह पूरी तरह से निष्क्रिय करने के लिए सुरक्षित है चेतावनी। अपवाद विनिर्देश बुरा हैं, और संकलक केवल आपको बता रहा है कि यह उन्हें आपके लिए अक्षम कर रहा है। भले ही यह मानक तोड़ देता है।

+2

ऐसा लगता है कि यह C++ 0x के रूप में संकलित है, जिसमें इस तरह के अपवाद विनिर्देशों को C++ 03 के बजाय बहिष्कृत किया गया है। यह निर्दिष्ट करने के लिए एक कंपाइलर विकल्प हो सकता है कि आप '03 चाहते हैं, या बस अपवाद विनिर्देशों को पुन: सक्षम करने के लिए यदि आप अन्य '0x फीचर्स चाहते हैं। –

+0

@Alexandre सी, हां मैं अक्षम करने और सभी के साथ सहमत हूं, लेकिन चेतावनी क्या है ?? यह क्यों हो रहा है और इसके पीछे तर्क क्या है ?? मैं बस इन्हें जानना चाहता था .. – liaK

+0

@liaK: अलेक्जेंड्रे द्वारा पोस्ट किया गया लिंक देखें। – Philipp

0

आप पूर्वप्रक्रमक के साथ खेल की कोशिश कर सकते:

#ifdef _SOME_MSVC_DEFINE 
# define _throw(foo) 
#else 
# define _throw(foo) throw(foo) 
#endif 

void myfunc1() _throw (CCustomException); 

या, दृश्य स्टूडियो में उस चेतावनी को निष्क्रिय करने की कोशिश करो।

0

मुझे यह link मिला, जो मुझे उपयोगी मिला। बस जोड़ा गया है अगर यह किसी के लिए सहायक हो सकता है ..

+0

जबकि यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, [यह बेहतर होगा] (// मेटा।stackoverflow.com/q/8259) यहां उत्तर के आवश्यक हिस्सों को शामिल करने के लिए, और संदर्भ के लिए लिंक प्रदान करें। –

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

  • कोई संबंधित समस्या नहीं^_^