2012-01-07 6 views
5

this question का उत्तर लिखने के बाद जो त्रुटि के साथ संकलन समय पर समाधान प्रदर्शित करता है, मुझे आश्चर्य हुआ कि इसके बजाय चेतावनी प्राप्त करना संभव था और संकलन को समाप्त करना संभव था (जैसा कि वास्तव में प्रश्न में निर्दिष्ट है)।चेतावनी जो लगातार विभिन्न कंपिलरों में ट्रिगर हो जाएंगी?

जबकि सामान्य रूप से निदान कंपाइलर-निर्भर हैं, यह कुछ कोड के लिए बहुत स्पष्ट है कि एक त्रुटि ट्रिगर हो जाएगी (जैसे एक अस्तित्व वाले सदस्य तक पहुंच या अपूर्ण प्रकार की वस्तु को तुरंत चालू करने का प्रयास करना)।

हालांकि चेतावनियों के लिए यह भी नहीं कहा जा सकता है, क्योंकि ये कंपाइलरों के बीच एक बड़ा सौदा भिन्न होते हैं। भले ही यह मानना ​​उचित है कि जीसीसी के साथ ट्रिगर होने वाली चेतावनियां क्लैंग के साथ भी ट्रिगर हो जाएंगी, वही दृश्य सी ++ के लिए नहीं कहा जा सकता है।

प्रश्न:
कौन सी चेतावनियां, यदि कोई हैं, तो लगातार तीनों निर्दिष्ट कंपलरों पर ट्रिगर हो जाएंगी?

कुलपति पर /W3 ++ और -Wall जीसीसी & बजना पर माना जा सकता है।


ध्यान दें कि यह केवल उस प्रश्न के लिए उपयोगी नहीं है, लेकिन उपयोगकर्ता द्वारा परिभाषित संदेशों के लिए चेतावनी को ट्रिगर करने के लिए भी उपयोगी हो सकता है।

+1

जीसीसी/क्लैंग पर '-Wall' का उपयोग करते समय आप एमएसवीसी पर '/ W3' का उपयोग क्यों करते हैं? एमएसवीसी अतिरिक्त चेतावनी स्तर के रूप में '/ W4' और'/Wall' का समर्थन करता है। –

+0

@ कोडी: मैं उनके बारे में संकलक के लिए "डिफ़ॉल्ट" सेटअप के रूप में सोचता हूं। चेतावनी प्रदर्शित करने के लिए मैं चेतावनी स्तर को बदलना नहीं चाहता हूं। '/ W3' विजुअल स्टूडियो में वास्तविक डिफ़ॉल्ट है और '-Wall' को भी डिफ़ॉल्ट के रूप में देखा जा सकता है। – Xeo

उत्तर

2

यह MSVC, जीसीसी, और बजना पर काम करना चाहिए:

#pragma message("hello world") 

कोई बहुत उपयोगी, लेकिन अभी भी काम करता है।

ये भी चेतावनी उठाया:

  • अप्रयुक्त चर
  • अप्रयुक्त लेबल
  • बड़े मूल्यों उदा (< 128)
+0

इसके साथ कोई भी टेम्पलेट सामग्री प्रदर्शित नहीं कर सकता है। :(और यह वास्तव में अब एक चेतावनी के रूप में नहीं गिना जाता है, है ना? – Xeo

+0

@Xeo हाँ, हालांकि यह काम करने की गारंटी है - चेतावनी बहुत ज्यादा नहीं है। – Pubby

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