2009-11-16 14 views
6

के लिए सिस्टम सिस्टम आमतौर पर प्रोग्रामिंग करते समय बहुत सी चेतावनियां सक्षम करना पसंद करते हैं। हालांकि, कुछ पुस्तकालयों में कोड होता है जो आसानी से चेतावनियां (.., पायथन, क्यूटी, ..) का कारण बनता है। जीसीसी के साथ संकलन करते समय मैं बस इसके बजाए -सिस्टम का उपयोग कर सकता हूं- मैं इसे चुप करने के लिए। मैं एमएस कंपाइलर के साथ ऐसा कैसे कर सकता हूं? मुझे चेतावनी #pragma पता है, लेकिन मुझे एक समाधान चाहिए जो पूरे स्थान पर कंपाइलर विशिष्ट कोड शामिल नहीं करता है। मुझे यह भी पता है कि मैं विशिष्ट चेतावनियां बंद कर सकता हूं, लेकिन यह वही नहीं है जो मैं चाहता हूं।- एमएस विजुअल स्टूडियो सी ++ कंपाइलर

Btw: isystem इस सवाल का एक टैग होना चाहिए, लेकिन मुझे लगता है कि ऐसा करने के लिए अनुमति नहीं थी ..

सारांश: मैं अपने कोड से सभी चेतावनी, और बाहरी से कोई चेतावनी देखना चाहते हैं कोड।

उत्तर

0

पर मतदान करने का प्रयास कर सकते हैं 2017-08-17 तक यह अभी भी असंभव प्रतीत होता है।आपके उत्तर के लिए धन्यवाद हाय,:

मैं एक सुविधा का अनुरोध यहां कहा:

https://developercommunity.visualstudio.com/content/problem/96411/impossible-to-ignore-warnings-from-system-librarie.html

1

नहीं, एमएसवीसी के पास -isystem समतुल्य नहीं है।


सीएल/आउटपुट आउटपुट आउटपुट देखें? :

/wd चेतावनी अक्षम n

/हम एक त्रुटि के रूप में एन चेतावनी इलाज

/wo चेतावनी जारी n एक बार

/डब्ल्यू सेट चेतावनी स्तर 1-4 के लिए n

ध्यान दें कि यह आपकी पूरी परियोजना के लिए चेतावनियों को अक्षम करता है; मुझे याद है कि क्यूटी का उपयोग करते समय मैं #pragma चेतावनी अक्षम के साथ अपने मुख्य हेडर को बदल दूंगा और अंत में फिर से सक्षम करूँगा ताकि मैं अभी भी अपने स्रोत के लिए सभी चेतावनियां देख सकूं।

संपादित लेखक, अपने प्रश्न संपादित अद्यतन जवाब: वहाँ चेतावनी और क्यूटी कोड संकलक झंडे का उपयोग कर बिना चेतावनी के साथ अपने कोड प्राप्त करने के कोई रास्ता नहीं है: आप कैसे संकलक क्या 'अपने' कोड है बताने के लिए जा रहे हैं?

ध्यान दें कि ऊपर झंडे फ़ाइल स्तर के साथ-लागू किया जा सकता है, तो यह आप केवल उन फ़ाइलों जिसमें आप क्यूटी हेडर शामिल हैं के लिए चेतावनी को निष्क्रिय करने की अनुमति होगी, लेकिन वह अभी भी मतलब है कि आप उनके लिए नहीं देख सकते हैं अपने उस फाइल में अपना कोड।

तो मैं ऊपर दिए गए उत्तर के साथ रहता हूं; यह काफी सुंदर नहीं है, लेकिन मुझे पूरा यकीन है कि यह एकमात्र तरीका है: शुरुआत में और क्यूटी हेडर के अंत में #pragma का उपयोग करें। या तो क्यूटी हेडर बदल (और भी अधिक बदसूरत), या इस तरह की एक कम आक्रामक तरीका चुनें:

//your source/header file 
#include "shutuppqt.h" 
#include <QString> 
#include "enableallwarnings.h" 

उदाहरण "shutuppqt.h"

#ifdef MSVC 
    #pragma warning (disable : 4222) //or whatever warning Qt emits 
#else 
    //.... 
#endif 

उदाहरण "enableallwarnings.h"

#ifdef MSVC 
    #pragma warning (enable : 4222) //or default instead of enable 
#else 
    //.... 
#endif 
+0

भाग 1! मैंने सिर्फ यह समझने के लिए प्रश्न संपादित किया कि मेरा क्या मतलब था। समस्याग्रस्त शीर्षलेख समेत, आप वास्तव में #pragma को धक्का/पॉप चेतावनी स्तर 0 पर उपयोग कर सकते हैं, लेकिन यह वह नहीं है जिसे मैं ढूंढ रहा हूं। इस तरह आप बाकी फाइल के लिए चेतावनियां प्राप्त करेंगे। एक आदर्श समाधान, सिवाय इसके कि मैं इसे किसी भी कोड को बदलने के बिना करना चाहता हूं। (मैं वास्तव में यह नहीं समझ सकता कि यह एक आम बात नहीं है।) मैं बस इतना करना चाहता हूं कि पोर्टेबल कोड बनाएं और इसे विभिन्न परिवेशों में परीक्षण करें, बिना प्रत्येक कंपाइलर के लिए अलग प्रीप्रोसेसर तर्क डाले। – Mathias

+1

भाग 2: यहां सिस्टम देखें: http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Preprocessor-Options.html#Preprocessor- विकल्प उस विकल्प का उपयोग करके आप प्रभावी ढंग से सभी को अक्षम कर देते हैं * डीआईआर * में किसी भी फाइल से चेतावनियां। इस तरह आप संकलक को बताते हैं कि आप क्या कोड हैं, या अधिक महत्वपूर्ण; आपका कोड * नहीं * क्या है। – Mathias

+1

सीएल के लिए ऐसा कोई विकल्प नहीं है, या कम से कम एक दस्तावेज नहीं है ... "मैं वास्तव में समझ नहीं सकता कि यह एक आम बात नहीं है" -> अच्छी तरह से मैं समझ नहीं पा रहा हूं कि क्यूटी जैसी एक बड़ी परियोजना नहीं है यह उत्पन्न होने वाली चेतावनियों के टन से छुटकारा पाने का ख्याल रखता है। – stijn

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