2008-11-12 21 views
5

मैंने केवल this post पढ़ा है कि क्यों नई लाइन चेतावनियां मौजूद हैं, लेकिन ईमानदार होने के लिए मेरी टीम के कई अलग-अलग प्लेटफार्मों पर काम कर रहे हैं और कई अलग-अलग संपादकों (हर कोई इसका उपयोग करता है कि कौन से बेस्ट उन्हें सूट करते हैं), इसलिए चेतावनी सर्वव्यापी हो गई है, और तब से यह वास्तव में शोर बनने के लायक चेतावनी नहीं है और गंभीर चेतावनियों को परेशानी का कारण बनता है।फाइल ध्वज पर कोई नई लाइन के बारे में जीसीसी की चेतावनी को किस ध्वज को शांत करता है?

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

अभी हम -Wall के साथ संकलित करते हैं, क्योंकि हम चेतावनियां चाहते हैं, लेकिन क्या नई लाइन चेतावनियों से बचने के लिए काउंटर ध्वज है?

नोट: मैंने मैन्युअल के माध्यम से देखा लेकिन मुझे किसी भी जगह स्पष्ट रूप से जवाब नहीं मिला, इसलिए मैंने छोड़ दिया।

नोट: रॉबर्ट गैंबल के पूरी तरह से उचित समाधान के जवाब में, हमारे कोड पार मंच है और हम लोगों को और लिनक्स, सोलारिस और विंडोज पर बनाता है, इसलिए नए ऑनलाइन ... आम सहमति के तहत नहीं है। और किसी का संकलक हमेशा रोना-भेड़िया जा रहा है। क्योंकि 40 से अधिक डेवलपर हैं, और अन्य गैर प्रोग्रामर कर्मचारी भी हैं।

+0

जब तक प्रत्येक फ़ाइल किसी प्रकार की नई लाइन (लाइनफीड, सीआर + एलएफ) के साथ समाप्त होती है, तब तक जीसीसी इस प्लेटफॉर्म के बावजूद शिकायत नहीं करेगा। –

+0

यही कारण है कि 'नैनो' संपादक चमकता है: यह स्वचालित रूप से अंत में नई लाइन जोड़ता है। कॉन्फ़िगरेशन फ़ाइलों को संपादित करने के लिए बढ़िया (हालांकि कोड लिखने के लिए थोड़ा खराब)। –

+0

वास्तविक समस्या की तरह लगता है यहां: "लोगों को एक अजीब बेकार चेतावनियां पास करने के लिए उपयोग किया जाता है"। मैं 'वाइरर' के साथ संकलित करता हूं ताकि ऐसा न हो। मैं थोड़ा अतिरिक्त समय तय करने वाला कोड बिताता हूं जो ठीक पहले से ही ठीक है अगर इसका मतलब है कि मैं एक चेतावनी चालू कर सकता हूं जो वास्तविक समस्या को पकड़ सकता है। स्वच्छ संकलन महत्वपूर्ण हैं ताकि सभी चेतावनियों को गंभीरता से लिया जा सके। –

उत्तर

5

वहाँ एक के रूप में तक मुझे पता है, मैं साल के लिए जीसीसी का उपयोग किया है नहीं है।

अद्यतन: सी ++ 11 मानक के साथ कोई चेतावनी नहीं उठाई जानी चाहिए। Related Q

+0

मेरे डर की पुष्टि करने के लिए धन्यवाद :) –

+0

हालांकि इसका उत्तर नहीं है कि मैं सुनना चाहता हूं :) यह सीधे मेरे प्रश्न का सही उत्तर है। –

+0

क्या यह उत्तर अभी भी मान्य है? इसकी चार साल पुरानी है। – balki

4

क्यों आप यह सुनिश्चित नहीं करते हैं कि आपकी फाइलों की समाप्ति नई लाइन हो, जैसा कि उन्हें माना जाता है? यह अपमानजनक संपादकों में एक सरल विन्यास परिवर्तन होना चाहिए और चेतावनी को "चुप्पी" करने का एक बहुत ही आसान तरीका है।

+0

एक कारण यह है कि कोड क्रॉस-प्लेटफार्म है और हमारे पास लोग हैं और लिनक्स, सोलारिस, विंडोज और मैक पर निर्माण करते हैं, इसलिए नई लाइन ... सर्वसम्मति से नहीं है। और किसी का संकलक हमेशा रोना-भेड़िया जा रहा है। –

+0

जीसीसी शिकायत नहीं करेगा अगर फाइलें विंडोज़ पर चलने पर एक लाइनफीड के साथ समाप्त होती हैं या कैरिज रिटर्न + यूनिक्स पर चलने पर लाइनफीड होती है, इसलिए यह तब तक काम करना चाहिए जब तक कि प्रत्येक फ़ाइल किसी प्रकार की नई लाइन के साथ समाप्त न हो। एक अच्छे उत्तर के लिए –

+0

+1। लेकिन हम 3 कंपाइलर्स का उपयोग करते हैं ... न केवल जीसीसी। अन्य दो अच्छे हैं और चेतावनी के बारे में चुप हैं, और 9 0% टीम उन कंपाइलर्स का उपयोग करती है, हममें से केवल 10% जीसीसी का उपयोग करते हैं, इसलिए त्रुटि हमारे लिए वापस आती रहती है। आह, इस तरह के ध्वज के लिए वास्तव में अच्छा होगा ... –

0

मुझे 9 0% यकीन है कि इसे बंद करने के लिए कोई तर्क नहीं है।

देखें मानक:

चेतावनी के लिए कारण यह है कि एक endline बिना फ़ाइलों को अपरिभाषित व्यवहार जब संकलित देना है http://c0x.coding-guidelines.com/5.1.1.2.html

यहाँ कुछ अजगर कोड के साथ एक ब्लॉग पोस्ट है (कि मैं प्रयास नहीं किया है), जो कहते हैं कि यह इस मुद्दे के साथ स्रोत फ़ाइलों को ठीक करेगा।

http://www.johndcook.com/blog/tag/gcc/

+0

अन्य कंपाइलर्स में इसे बंद कर दिया जा सकता है, मेरा मतलब है कि यदि आप चाहते थे तो आप सभी चेतावनियों को बंद कर सकते हैं, जो निश्चित रूप से "अनुचित" है, लेकिन संभव है। तो एक बेकार और वास्तविक जीवन में अच्छी तरह परिभाषित व्यवहार (पूरी तरह से ठीक संकलित) चेतावनी स्विच करने के लिए बहुत सारे तर्क हैं। –

+1

ठीक है, ईमानदार होने के लिए आप सही हैं कि ** ** आदर्श प्रोग्रामर दुनिया में इसे बंद करने का कोई कारण नहीं है, लेकिन हमारी परियोजना कुछ रसद समस्याओं से ग्रस्त है जो इसे बंद करने के लिए एक अच्छा मामला बनाती है। –

5

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

+0

+1। वास्तव में यह एक अच्छा समाधान है, और शायद यह करने के अंत में होगा। यद्यपि ऐसा करने के लिए एक चौराहे का तरीका :) –

+0

+1 आपने मुझे इसे हराया। –

+0

अरे, मैं बस यह लिखने जा रहा था :-) हम टैब को हटाने के समान कुछ करते हैं। – Enno

0

अपने स्रोत नियंत्रण में एक हुक जोड़ें जो नई कोड जोड़ने तक सफल कोड चेक-इन की अनुमति नहीं देगा?

+2

प्रतिबद्धता को खारिज करने के विचार से फ़ाइलों को ठीक करने वाला एक हुक जोड़ने का विचार बेहतर है। मैं एक के लिए, शायद हमारे पेशे में दुर्लभ, सोचता हूं कि मानव जरूरतों को मशीनों और कंपाइलरों की जरूरतों से पहले जाना है। –

1
-Wno-eof-newline 

यह gcc bug 14331


अजीब तरह से पर्याप्त मैं वास्तव में उत्पादन के लिए जीसीसी लापता नई-पंक्तियों के लिए एक चेतावनी नहीं मिल सकता है

के लिए ठीक से जोड़ी गई। मुझे लगता है कि नए संस्करणों ने इस चेतावनी के साथ पूरी तरह से वितरण किया है।

मैं -Wno-eof-newline स्वीकार करने के लिए जीसीसी प्राप्त कर सकता हूं लेकिन जब मैं -Weof-newline कोशिश करता हूं तो यह अपरिचित ध्वज की शिकायत करता है। सी ++ 11 ने फाइलों के अंत में न्यूलाइन के लिए आवश्यकता को हटा दिया लेकिन पुराने मानकों में पोर्टेबल कोड लिखने के लिए वास्तव में ऐसी पैडेंटिक चेतावनियों को सक्षम करना संभव होना चाहिए।


सौभाग्य बजना अभी भी सही ढंग नई पंक्तियां याद आ रही के बारे में निदान का समर्थन करता है: यह चेतावनी, सभी साधनों में -Wnewline-eof साथ सक्रिय किया जा सकता या सी ++ 11 और उच्च मोड में यह भी -Wc++98-compat-pedantic साथ सक्रिय किया जा सकता।

इन चेतावनियों डिफ़ॉल्ट रूप से बंद हैं, लेकिन आप बजना के -Weverything ध्वज का लाभ उठा रहे हैं चेतावनी को नियंत्रित करने के लिए एक 'subtractive' की रणनीति सक्षम करने के लिए है, तो सी ++ 11 और उच्च मोड में आप दोनों -Wno-newline-eof और -Wno-c++98-compat-pedantic अक्षम करने की आवश्यकता चेतावनी।

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