मानक के तहत, उस संदर्भ में संकुचित रूपांतरण अवैध हैं। वे अन्य संदर्भ में कानूनी हैं। ("अवैध" से, मेरा मतलब है कि कार्यक्रम को खराब बना दिया गया है)।
मानक के लिए आवश्यक है कि एक कंपाइलर उस विशेष मामले में निदान जारी करे (कार्यक्रम को खराब बनाये)। नैदानिक उत्सर्जित मानक पत्तियों को अपरिभाषित करने के बाद संकलक क्या करता है।
एमएसवीसी संकलन को रोकने का विकल्प चुनता है। जीसीसी emit nasal राक्षसों को चुनता है प्रोग्राम का अर्थ है समझ में आता है, और रूपांतरण करते हैं, और संकलन जारी रखते हैं।
दोनों चेतावनियां और त्रुटियां डायग्नोस्टिक्स हैं जहां तक मानक का संबंध है। पारंपरिक रूप से त्रुटियां होती हैं जिन्हें आप डायग्नोस्टिक्स कहते हैं जो संकलक रोकने वाले संकलन को आगे बढ़ाते हैं।
यह भी ध्यान रखें कि कंपाइलर्स जब चाहें निदान को मुक्त करने के लिए स्वतंत्र होते हैं।
पारंपरिक रूप से चेतावनी का उपयोग तब किया जाता है जब आप मानक निर्देशों को एक अच्छी तरह से गठित कार्यक्रम करते हैं, फिर भी संकलक लेखकों को बीमार सलाह दी जाती है, और जब मानक एक बीमार गठित कार्यक्रम का पता लगाता है, तो त्रुटियां होती हैं, लेकिन अधिकांश कंपाइलर सख्ती से इसे लागू नहीं करते हैं।
क्या उस निषेध को लगातार लागू करने के लिए एक कंपाइलर ध्वज है? – Schwern
'int i = 0; चार सी [] = {i}; 'पुराना शैली प्रारंभिक रूप भी था, वैध सी ++ 03 लेकिन अमान्य सी ++ 11 था। विरासत कोड * वास्तव में परिवर्तन से टूट गया था। – hvd