"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > क्या C++ में `main()` को पुनरावर्ती रूप से कॉल करने की अनुमति है?

क्या C++ में `main()` को पुनरावर्ती रूप से कॉल करने की अनुमति है?

2024-11-04 को प्रकाशित
ब्राउज़ करें:700

Is Recursively Calling `main()` Allowed in C  ?

C में मुख्य फ़ंक्शन को पुनरावर्ती रूप से कॉल करना

कोड स्निपेट ने C में मुख्य() फ़ंक्शन को पुनरावर्ती रूप से कॉल करने का प्रयास प्रदान किया। हालाँकि, यह ध्यान रखना महत्वपूर्ण है कि सख्त सी अनुपालन में इस व्यवहार की अनुमति नहीं है। , कोई फ़ंक्शन मुख्य() फ़ंक्शन सहित स्वयं को सीधे कॉल नहीं कर सकता है। इस प्रतिबंध का उद्देश्य अनंत रिकर्सन को रोकना और प्रोग्राम समाप्ति की गारंटी देना है। जीएनयू सी कंपाइलर (जी) का उपयोग करना। जी इस संबंध में मानक को सख्ती से लागू नहीं करता है, पुनरावर्ती मुख्य() कॉल वाले कोड को संकलित और निष्पादित करने की अनुमति देता है।

उदाहरण कोड

निम्नलिखित संशोधित कोड स्निपेट g :

#include का उपयोग करके पुनरावर्ती मुख्य() कॉल प्रदर्शित करता है #शामिल करें नेमस्पेस एसटीडी का उपयोग करना; मुख्य प्रवेश बिंदु() { int y = रैंड() % 10; // 3, फिर 6, फिर 7 लौटाता है cout

जब संकलित और निष्पादित किया जाता है, तो यह कोड निम्नलिखित आउटपुट उत्पन्न करेगा:

y = 3 y = 6 y = 7

असेंबली विश्लेषण

इस कोड के लिए उत्पन्न असेंबली की जांच से पता चलता है कि जी किसी अन्य फ़ंक्शन कॉल की तरह पुनरावर्ती मुख्य() कॉल का इलाज करता है:
#include 
#include 
using namespace std;

int main() {
    int y = rand() % 10; // returns 3, then 6, then 7
    cout 

नोट:
y = 3
y = 6
y = 7

हालांकि यह व्यवहार g के साथ संभव है, यह ध्यान रखना महत्वपूर्ण है कि इसकी गारंटी नहीं है। अन्य कंपाइलर सी मानक का सख्ती से पालन कर सकते हैं, जिसके परिणामस्वरूप संकलन त्रुटियां या अप्रत्याशित व्यवहार हो सकता है। इसलिए, पुनरावर्ती मुख्य() कॉल का उपयोग अनुशंसित अभ्यास नहीं है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3