2013-05-05 3 views
23

मैं सभी संभावित चेतावनियों को पकड़ने के लिए कंपाइलर के लिए -Weverything का उपयोग करना चाहता हूं, लेकिन कभी-कभी मुझे चेतावनियां मिलती हैं जिन्हें मैं ठीक नहीं करना चाहता हूं। मैं उन विशेष चेतावनियों को मैन्युअल रूप से अक्षम कैसे कर सकता हूं?क्लैंग (एक्सकोड में): सभी चीज़ों के साथ शुरू करें और मैन्युअल रूप से विशेष चेतावनियां अक्षम करें

+2

ध्यान दें कि आपका दृष्टिकोण वास्तव में चीजों के बारे में जाने का सबसे अच्छा तरीका नहीं है: http://programmers.stackexchange.com/questions/122608/clang-warning-flags-for-objective-c-development/124574#124574 –

उत्तर

26

आप -Wno-XYZ का उपयोग कर व्यक्तिगत चेतावनियों को अक्षम कर सकते हैं, XYZ चेतावनी सुविधा का नाम अक्षम होने का नाम है।

+3

ठीक है, लेकिन क्या आप जानते हैं कि एक्सकोड में पीले चेतावनी बबल से मुझे सही 'XYZ' कैसे मिलता है? प्रश्न के लिए कृपया "एक्सकोड" वापस लाएं। यह इसका एक महत्वपूर्ण हिस्सा था :) – 7cows

+1

@ 7cows नहीं, यह वास्तव में एक एक्सकोड प्रश्न नहीं है, आप ** कंपाइलर ** झंडे सेट करना चाहते हैं। खैर, 'क्लैंग' के लिए एक मैनुअल है जिसमें चेतावनियों सहित सभी स्विच और विकल्प सूचीबद्ध हैं। यहां आप हैं: [लिंक] (http://clang.llvm.org/docs/UsersManual.html#individual-warning- समूह) –

+1

@ 7cows टैग पर 'xcode' वापस न रखें, यह ** वास्तव में है एक टीकोड सवाल नहीं है। साथ ही, आपको जवाब में जवाब नहीं देना चाहिए - यही कारण है कि हमारे पास उत्तर के लिए अलग-अलग पोस्ट हैं। –

1

मुझे लगता है कि आप व्यक्तिगत चेतावनियों को सक्षम/अक्षम करने के लिए बिल्ड सेटिंग्स को अपडेट करने और अपने कोड में चेतावनी को अक्षम करना चाहते हैं।

#ifdef TESTFLIGHT_USERTRACKING 

#pragma clang diagnostic push 
#pragma clang diagnostic ignored "-Wdeprecated-declarations" 
#pragma clang diagnostic ignored "-Wdeprecated-implementations" 

[TestFlight setDeviceIdentifier:[[UIDevice currentDevice] uniqueIdentifier]]; 

#pragma clang diagnostic pop 

#endif 
16

XCode

XCode 5 में मैं निर्माण करने के लिए है, तो सही एक मुद्दा पर क्लिक करें और "लॉग इन प्रकट" था तो "सभी" मिल भी करने के लिए मध्य फलक टैब सेट: यहाँ एक उदाहरण है लॉग में प्रदर्शित मुद्दों।

फिर दाईं ओर "हैम्बर्गर" चिह्न पर क्लिक करके नीचे स्क्रॉल करना मुझे अंततः चेतावनी का सटीक विवरण मिला।

/.../SettingsViewController.m:91:58: warning: creating selector for nonexistent method 'setSegueIdentifier:' [-Wselector] 
    [segue.destinationViewController performSelector:@selector(setSegueIdentifier:) 

तो मेरे मामले में निम्नलिखित कार्य करता है। (#pragma clang diagnostic ignored "-Wxyz" का उपयोग कर)

#pragma clang diagnostic push 
#pragma clang diagnostic ignored "-Wselector" 
... 
#pragma clang diagnostic pop 
+2

मैं थोड़ी देर के लिए कंपाइलर चेतावनी के लिए विशिष्ट ध्वज को कैसे ढूंढ रहा हूं! इसके लिए धन्यवाद - बहुत उपयोगी! – Barjavel

3

मैं सिर्फ एक साइट है कि सभी बजना चेतावनी और झंडे कि उन्हें निष्क्रिय सूचीबद्ध करता टकरा:

http://goo.gl/hwwIUa (जब आप इसे पर जाएँ आप कारण है कि मैं यूआरएल छोटा कर दिया है समझ जाएंगे)।

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