2012-06-07 11 views
12

मैं किसी तृतीय-पक्ष लाइब्रेरी से एक फ़ाइल शामिल कर रहा हूं जो एक त्रुटि उत्पन्न करता है जिसे -fpermissive के साथ चेतावनी में डाउनग्रेड किया जा सकता है। लेकिन क्योंकि मैं इन चेतावनियों के साथ अपने संकलन लॉग को "प्रदूषित" नहीं करना चाहता, इसलिए मैं इस संदेश को पूरी तरह से अक्षम करना चाहता हूं।जीसीसी में, fpermissive चेतावनी को म्यूट कैसे करें?

अब तक, -fpermissive विकल्प को diagnostic pragma फ़ाइल के साथ सेट करते समय सेट करें; कुछ की तरह:

#pragma GCC diagnostic push 
#pragma GCC diagnostic warning "-fpermissive" 

#include <third-party-file.h> 

#pragma GCC diagnostic pop 

के बाद से जीसीसी आमतौर पर -f झंडे के दोनों एक "सकारात्मक" और "नकारात्मक" संस्करण प्रदान करते हैं मैं "नहीं-अनुमोदक" सुविधा की अनदेखी के बारे में सोचा:

#pragma GCC diagnostic ignored "-fno-permissive" 
#include <third-party-file.h> 

लेकिन वहाँ -fpermissive ध्वज का "ऋणात्मक" संस्करण प्रतीत नहीं होता है (मैं जीसीसी 4.6.3 का उपयोग कर रहा हूं, लेकिन संस्करण 4.7.0 does not have it) भी।

कोई भी मौका मैं इस व्यवहार की नकल कर सकता हूं? धन्यवाद!

+1

'-fno-permissive' डिफ़ॉल्ट है। '-fpermissive' और ध्वज के" नकारात्मक "और" सकारात्मक "संस्करण कुछ भी नहीं हैं। उस ने कहा, आपको इसका उपयोग नहीं करना चाहिए। कोड ठीक करें! भले ही यह तुम्हारा नहीं है। – rubenvb

+1

-fno-permissive डिफ़ॉल्ट नहीं है, क्योंकि विकल्प मौजूद नहीं है। यदि यह अस्तित्व में था तो व्यवहार डिफ़ॉल्ट होगा हालांकि डिफ़ॉल्ट होगा। मैं कोड को ठीक कर सकता हूं, लेकिन यह एक वर्कअराउंड की तरह लगता है ... वैसे भी, हेडर के पूरे सेट को ठीक करना वास्तव में एक विकल्प नहीं है। – piwi

+0

यह वही है जो मेरा मतलब था। '-fpermissive' हैक/वर्कअराउंड यहाँ है। वैसे भी हम किस कोड के बारे में बात कर रहे हैं। शायद एक बेहतर विकल्प है। – rubenvb

उत्तर

11

यह शायद इस बात के लिए थोड़ी देर हो चुकी है, लेकिन इनमें से किसी एक जैसे आप चाहते हैं करना चाहिए:

#pragma GCC diagnostic ignored "-fpermissive" 

या

#pragma GCC diagnostic ignored "-pedantic" 

"अनदेखा" है कि कैसे आप पूरी तरह से एक नैदानिक ​​झंखाड़, और ऐतिहासिक कारणों से -fpermissive के विपरीत -pedantic है।

+1

आपके उत्तर के लिए धन्यवाद! क्या आपको पता है कि '-ppantissive' के विपरीत होने के बारे में मुझे कहां मिल सकता है? – piwi

+1

दुर्भाग्य से यह स्पष्ट रूप से दस्तावेज नहीं है। आप यहां '-फर्मिमिसिव' के बारे में पढ़ सकते हैं: http://gcc.gnu.org/onlinedocs/gcc-4.8.0/gcc/C_002b_002b-Dialect-Options.html#index-fpermissive-154 और '-pedantic' यहां: http://gcc.gnu.org/onlinedocs/gcc-4.8.0/gcc/Warning-Options.html#index-pedantic-257 और यदि आप लाइनों के बीच पढ़ते हैं तो आप समझ सकते हैं कि क्या हो रहा है कि सी ++ कंपाइलर में 'डिफ़ॉल्ट-त्रुटियों' की डिफ़ॉल्ट स्थिति है। लेकिन मैं आपको वास्तविक कोड पर इंगित किए बिना यह साबित नहीं कर सकता ... – zwol

+0

... और उनके पास उनके वीसीएस के लिए ऑनलाइन क्रॉसरेफर इंडेक्स नहीं है, इसलिए मुझे इसे डाउनलोड किए बिना वास्तविक कोड का प्रासंगिक बिट नहीं मिल रहा है सब कुछ और 'grep' का एक गुच्छा चल रहा है, जो मेरे पास आज सुबह के लिए समय नहीं है। माफ़ कीजिये। – zwol

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