सारांश: आपको जरूरी नहीं है, लेकिन आपको चाहिए।
सी 0 9 0 में main()
के अंत तक पहुंचने के बिना return
कथन निष्पादित किए बिना "होस्ट वातावरण में लौटाई गई समाप्ति स्थिति अपरिभाषित है"। मैंने कम से कम एक सिस्टम का उपयोग किया है, लौटाई गई स्थिति 1 है, जो उस प्रणाली पर इंगित करती है कि प्रोग्राम विफल हुआ।
C99 कह रही है कि main()
रिटर्न 0. के अंत तक पहुँचने एक नया नियम जोड़ा है, (सी ++ यही नियम है।) सभी compilers पूरी तरह से C99 लागू नहीं है, और उन है कि अक्सर करते हैं डिफ़ॉल्ट रूप से C99 compilers अनुरूप के रूप में व्यवहार नहीं करते ।
केवल पोर्टेबल मूल्यों आप main()
से लौट सकते हैं 0, EXIT_SUCCESS
, और EXIT_FAILURE
हैं (उत्तरार्द्ध दो <stdlib.h>
में परिभाषित कर रहे हैं 0 और EXIT_SUCCESS
संकेत मिलता है कि कार्यक्रम सफल रहा है (और EXIT_SUCCESS
आमतौर पर 0 के रूप में परिभाषित किया गया है);। EXIT_FAILURE
इंगित करता है कि कार्यक्रम असफल रहा। return 1;
आम है, लेकिन गैर पोर्टेबल है; मैंने एक सिस्टम (वीएमएस) पर काम किया है, जहां 1 की समाप्ति स्थिति सफलता को इंगित करती है। यदि आप चाहते हैं कि आपका प्रोग्राम पोर्टेबल हो, तो विफलता को इंगित करने के लिए EXIT_FAILURE
का उपयोग करें; यही है यह कुछ सिस्टम और प्रोग्राम अन्य सिस्टम-विशिष्ट या एप्लिकेशन-विशिष्ट स्थिति कोड को परिभाषित करता है।
पोर्टेबिलिटी (और, आईएमएचओ, स्टाइल) के लिए, main()
के अंत में एक स्पष्ट return 0;
करना सर्वोत्तम है, हालांकि सभी परिस्थितियों में इसकी आवश्यकता नहीं है। समय की बर्बादी के मुकाबले कोड की एक पंक्ति (जो सबसे खराब, हानिरहित है) को जोड़ना बहुत आसान है, यह निर्धारित करने के लिए कि आपको इसकी आवश्यकता है या नहीं।
ध्यान दें कि main()
के लिए सही परिभाषाएं दी गई हैं:
int main(void) { /* ... */ }
और
int main(int argc, char *argv[]) { /* ... */ }
या समकक्ष (उदाहरण के लिए, आप char **argv
बजाय char *argv[]
लिख सकते हैं)। यह संदिग्ध है कि int main() { /* ... */ }
मान्य है, सूक्ष्म कारणों से मैं यहां नहीं जाऊंगा। फिर, यह निर्धारित करने के लिए कि आपको इसकी आवश्यकता है या नहीं, समय बर्बाद करने के बजाय void
कीवर्ड जोड़ना आसान है।
कई किताबें और ट्यूटोरियल void main()
या void main(void)
का उपयोग करते हैं। एक विशेष संकलक इसे अनुमति देने का विकल्प चुन सकता है, लेकिन यह पोर्टेबल नहीं है। किसी पुस्तक या ट्यूटोरियल में void main
देखकर एक अच्छा संकेत है कि लेखक सी मानक को बहुत अच्छी तरह से नहीं जानता है, और आपको अध्ययन करने के लिए कुछ और ढूंढना चाहिए।
आवश्यक नहीं है, लेकिन आवश्यक है। – Philip