कई महीने पहले, मुझे कुछ कोड ठीक करना पड़ा जिससे कुछ समस्याएं हुईं। कोड इस तरह मूल रूप से देखा:यह स्पष्ट अनंत रिकर्सन क्यों एक कंपाइलर चेतावनी देता है?
int badFun() { return badFun(); }
यह स्पष्ट रूप से उच्च स्तर की भाषा मैं (SilkTest में 4Test) के साथ काम कर रहा था में भी एक ढेर अतिप्रवाह का कारण बना। इस कोड को फायदेमंद के रूप में देखा जा सकता है कोई रास्ता नहीं है। स्क्रिप्ट समाप्त होने के बाद समस्याओं का पहला संकेत चेतावनी दी गई थी, लेकिन कोई संकलन त्रुटियों या चेतावनियां नहीं थीं। उत्सुकता से, मैंने सी ++, सी # और पायथन में एक ही संरचना के साथ प्रोग्राम लिखने की कोशिश की, और उनमें से सभी संकलित त्रुटियों या चेतावनियों के साथ संकलित/व्याख्या की गईं, यहां तक कि सभी मामलों में रनटाइम त्रुटियां भी थीं। मैंने इनमें से किसी भी मामले में कोई चेतावनी भी नहीं देखी। डिफ़ॉल्ट रूप से यह संभावित समस्या के रूप में क्यों नहीं देखा जाता है?
संपादित करें: मैंने उन तीनों भाषाओं में उस कार्य के बराबर लिखने की कोशिश की, इसलिए मैंने उन फ़ंक्शन टैग को जोड़ा। मुझे समग्र कारणों में अधिक दिलचस्पी है क्यों इस तरह के कोड को कोई चेतावनी नहीं मिलती है। यदि आवश्यक हो तो कृपया पुनः प्रयास करें।
क्या आपका प्रश्न स्वयं सी #, सी ++ * या * पायथन के बारे में है? कोड नमूना मेरे लिए सी # जैसी पूरी तरह दिखता है। – BoltClock
यह कुछ बेवकूफ करने से आपको रखने के लिए संकलक का काम नहीं है। अधिकांश भाषाओं में, कुछ बाहरी घटनाओं के लिए बाहर निकलने के लिए इस तरह के निर्माण का कारण बनना संभव है। –
एमएसवीसी (सी ++) में, यदि आप फ़ंक्शन को कॉल करते हैं तो यह आपको चेतावनी देगा: 'चेतावनी C4717:' badFun ': सभी नियंत्रण पथों पर रिकर्सिव, फ़ंक्शन रनटाइम स्टैक ओवरफ़्लो' – Mysticial