सादा और बस (सी ++ 11 6.6.3 "वापसी कथन" से):
एक समारोह के अंत की ओर बहने वाली कोई मूल्य नहीं के साथ एक लाभ के समतुल्य है, यह मूल्य-वापसी कार्य में अपरिभाषित व्यवहार में परिणाम देता है।
तो संकलक को जो कुछ भी चाहिए वह करने की अनुमति है। जाहिर है, एक निदान एक संकलक से कुछ पसंद है, लेकिन ऐसे समय होते हैं जब निदान करना मुश्किल हो सकता है (जैसे कि वापसी सशर्त तर्क के अंदर होती है, और समारोह का 'अंत' कभी नहीं पहुंचाया जाएगा)।
ध्यान दें कि मैं जीसीसी 4.6.1 (Wall
विकल्प का उपयोग) के साथ निम्न चेतावनी मिलती है:
test.cpp:8:1: warning: no return statement in function returning non-void [-Wreturn-type]
मुझे यकीन है कि क्या विकल्प ideone जीसीसी के पास रहता है (मुझे लगता है कि -Wall
भी ऐसा ही होगा नहीं कर रहा हूँ 4.3.4 संस्करण के साथ जो विचारधारा उपयोग करता है)।
कुछ संबंधित जानकारी:
सी में यह एक समारोह है कि एक मूल्य के वापस जाने के लिए घोषित किया जाता है के लिए ठीक है के लिए वास्तव में नहीं तो कुछ निश्चित परिस्थितियों में करते हैं; सी में केवल अपरिभाषित व्यवहार में परिणाम होता है यदि फ़ंक्शन का रिटर्न वैल्यू वास्तव में प्रयुक्त होता है। प्री-स्टैंडर्ड सी हमेशा void
प्रकार का समर्थन नहीं करता था, इसलिए कुछ भी वापस नहीं किए गए फ़ंक्शंस को स्पष्ट रूप से या निहित रूप से int
वापस करने के लिए घोषित किया गया था। सी 99 6.9.1/12 "फंक्शन परिभाषाएं" से: यदि }
जो फ़ंक्शन को समाप्त करता है, और कॉलर द्वारा फ़ंक्शन कॉल का मान उपयोग किया जाता है, तो व्यवहार अपरिभाषित होता है।
इसके अलावा, जैसा कि कुछ टिप्पणियों में उल्लेख किया गया है, main()
के अंत में बहने वाला विशेष रूप से सी ++ और सी 99 और बाद में इलाज किया जाता है।
स्रोत
2012-07-15 20:22:06
क्या आप उद्धरण के स्रोत का संदर्भ ले सकते हैं? –
@ डेसमंडम: मानक। – Xeo
एकमात्र समय यह अच्छी तरह से परिभाषित किया गया है 'मुख्य' –