main
समारोह ग्लोबल नेम स्पेस में एक गैर सदस्य समारोह के रूप में घोषित किया जाना चाहिए। इसका अर्थ है कि यह किसी वर्ग का स्थिर या गैर-स्थिर सदस्य कार्य नहीं हो सकता है, न ही इसे किसी नाम स्थान (यहां तक कि अनाम नाम स्थान) में रखा जा सकता है।
main
वैश्विक नामस्थान में एक फ़ंक्शन को छोड़कर सी ++ में नाम आरक्षित नहीं है। आप अन्य नामों की घोषणा करने के लिए स्वतंत्र हैं main
, जिनमें अन्य चीजें, कक्षाएं, चर, गणना, सदस्य फ़ंक्शन और गैर-सदस्य फ़ंक्शन शामिल हैं जो वैश्विक नाम स्थान में नहीं हैं।
आप फ़ंक्शन फ़ंक्शन main
को सदस्य फ़ंक्शन या नामस्थान में घोषित कर सकते हैं , लेकिन ऐसा फ़ंक्शन ऐसा फ़ंक्शन नहीं होगा main
जो डिज़ाइन करता है जहां प्रोग्राम प्रारंभ होता है।
main
समारोह के रूप में घोषित नहीं किया जा सकता static
या inline
। यह भी अतिभारित नहीं किया जा सकता है; main
वैश्विक नाम स्थान में केवल एक फ़ंक्शन का नाम हो सकता है ।
main
समारोह अपने कार्यक्रम में इस्तेमाल नहीं किया जा सकता: आप कॉल करने के लिए अनुमति नहीं है main
अपने कोड में कहीं से भी समारोह, न ही आप इसका पता लेने के लिए अनुमति दी जाती है।
वापसी का प्रकार main
होना चाहिएint
। किसी अन्य रिटर्न प्रकार की अनुमति नहीं है (यह नियम बोल्ड है क्योंकि यह गलत कार्यक्रमों को देखने के लिए बहुत आम है main
जो रिटर्न प्रकार के साथ घोषित करते हैं void
; यह संभवतः main
फ़ंक्शन के विषय में सबसे अक्सर उल्लंघन किया जाने वाला नियम है )।
इसकी दो घोषणाएँ main
होनी चाहिए:
int main() // (1)
int main(int, char*[]) // (2)
में (1) , वहाँ कोई मापदंड हैं।
में (2) , वहाँ दो मापदंडों हैं और वे पारंपरिक नाम हैं argc
और argv
क्रमश:। argv
कार्यक्रम के तर्कों का प्रतिनिधित्व करने वाले सी स्ट्रिंग की एक सरणी के लिए एक संकेतक है। सरणी argc
में तर्कों की संख्या है argv
।
आमतौर पर, argv[0]
कार्यक्रम का नाम होता है, लेकिन यह हमेशा ऐसा नहीं होता है। argv[argc]
एक शून्य सूचक होने की गारंटी है।
ध्यान दें कि सरणी प्रकार तर्क (जैसे char*[]
) वास्तव में भेस में केवल एक सूचक प्रकार का तर्क है, निम्नलिखित दो (2) लिखने के लिए दोनों वैध तरीके हैं और वे दोनों बिल्कुल एक ही बात का अर्थ करते हैं:
int main(int argc, char* argv[])
int main(int argc, char** argv)
कुछ कार्यान्वयन अन्य प्रकार और मापदंडों की संख्या की अनुमति दे सकते हैं; आपको यह देखने के लिए अपने कार्यान्वयन के प्रलेखन की जांच करनी होगी कि यह क्या समर्थन करता है।
main()
असफलता को इंगित करने के लिए शून्य और गैर-शून्य की वापसी की उम्मीद है। आपको स्पष्ट रूप से एक return
बयान लिखने की आवश्यकता नहीं है main()
: यदि आप main()
स्पष्ट return
विवरण के बिना वापसी करते हैं , तो यह वैसा ही है जैसा आपने लिखा था return 0;
। निम्नलिखित दो main()
कार्यों में समान व्यवहार है:
int main() { }
int main() { return 0; }
दो मैक्रोज़ हैं, EXIT_SUCCESS
और इसमें EXIT_FAILURE
परिभाषित किया गया <cstdlib>
है main()
, क्रमशः सफलता और विफलता को इंगित करने के लिए से लौटाया जा सकता है।
द्वारा दिए गए मान main()
को पारित कर दिया है exit()
समारोह है, जो कार्यक्रम समाप्त हो जाता है।
ध्यान दें कि यह सब केवल एक होस्ट किए गए वातावरण (अनौपचारिक रूप से, आपके पास एक पूर्ण मानक पुस्तकालय है और वहाँ एक ओएस है जो आपका प्रोग्राम चला रहा है) के लिए संकलन करते समय लागू होता है। फ्रीस्टैंडिंग वातावरण (उदाहरण के लिए, कुछ प्रकार के एम्बेडेड सिस्टम) के लिए C ++ प्रोग्राम को संकलित करना भी संभव है, जिसमें स्टार्टअप और टर्मिनेशन पूरी तरह से कार्यान्वयन-परिभाषित हैं और एक main()
फ़ंक्शन की आवश्यकता भी नहीं हो सकती है। यदि आप आधुनिक डेस्कटॉप OS के लिए C ++ लिख रहे हैं, हालांकि, आप एक होस्ट किए गए वातावरण के लिए संकलन कर रहे हैं।
main
लौटना चाहिए ।