c++ - क्यों int मुख्य () {} संकलन करता है?




2 Answers

3.6.1 मुख्य समारोह

....

2 कार्यान्वयन main कार्य को पूर्वनिर्धारित नहीं करेगा। यह फ़ंक्शन अतिभारित नहीं होगा। इसमें वापसी प्रकार का प्रकार int , लेकिन अन्यथा इसके प्रकार कार्यान्वयन-परिभाषित है। सभी कार्यान्वयन मुख्य के निम्नलिखित परिभाषाओं की अनुमति देगा:

int main() { /* ... */ }

तथा

int main(int argc, char* argv[]) {
/* ... */
}

.... और यह जोड़ना जारी है ...

5 main में एक return स्टेटमेंट मुख्य फ़ंक्शन को छोड़ने का प्रभाव (स्वत: संग्रहण अवधि के साथ किसी भी ऑब्जेक्ट को नष्ट कर रहा है) और तर्क के रूप में वापसी मूल्य के साथ exit कॉल करता है। यदि रिटर्न कथन का सामना किए बिना main नियंत्रण के अंत तक पहुंच जाता है, तो प्रभाव वापसी 0 निष्पादित करने की है ;

सी ++ मानक की एक ऑनलाइन प्रति प्राप्त करने का प्रयास करने के लिए, इसलिए मैं इस मार्ग का उद्धरण कर सकता हूं मैंने एक ब्लॉग पोस्ट पाया जो कि मैं जितना सही था, उतना सही बिट्स उद्धृत करता था।

(मैं विजुअल सी ++ 2008 का उपयोग कर रहा हूं) मैंने हमेशा सुना है कि मुख्य () को एक पूर्णांक लौटने की आवश्यकता है, लेकिन यहां मैंने return 0; में नहीं डाला return 0; और और यह 0 त्रुटियों और 0 चेतावनियों के साथ संकलित! डिबग विंडो में यह कहता है कि कार्यक्रम में कोड 0 से निकल गया है। अगर इस फ़ंक्शन को मुख्य () के अलावा कुछ और नाम दिया गया है, तो कंपाइलर शिकायत करता है कि 'ब्ला' को एक मान वापस करना होगा। return; चिपका return; त्रुटि को प्रकट होने के कारण भी होता है लेकिन इसे पूरी तरह से बाहर छोड़कर, यह सिर्फ ठीक ठीक है।

#include <iostream>
using namespace std;

int main()
{
    cout << "Hey look I'm supposed to return an int but I'm not gonna!\n";
}

क्या यह वीसी ++ में एक बग हो सकता है?




मुझे पूरा यकीन है कि यदि आप मुख्य फ़ंक्शन में एक को शामिल नहीं करते हैं तो वीसी ++ बस एक वापसी 0 सम्मिलित करता है I कार्य के साथ भी यही बात हो सकती है, लेकिन उन मामलों में कम से कम आपको एक चेतावनी मिलेगी।




Related

c++ return-value main