मैं वास्तविक भाषा मानकों का हवाला देते हुए पहले से दिए गए उत्तरों को जोड़ना चाहूंगा।
'इंट मेन है?' एक वैध सी कार्यक्रम?
संक्षिप्त उत्तर (मेरी राय): केवल तभी जब आपका कार्यान्वयन "फ्रीस्टैंडिंग निष्पादन वातावरण" का उपयोग करता है।
C11 से सभी निम्नलिखित उद्धरण
5. पर्यावरण
एक कार्यान्वयन सी स्रोत फ़ाइलों का अनुवाद करता है और सी प्रोग्राम को दो डेटाप्रोसेसिंग-सिस्टम वातावरण में निष्पादित करता है , जिसे अनुवाद पर्यावरण और निष्पादन वातावरण कहा जाएगा [...]
5.1.2 निष्पादन वातावरण
दो निष्पादन वातावरण परिभाषित किए गए हैं: फ्रीस्टैंडिंग और होस्ट। दोनों मामलों में, प्रोग्राम स्टार्टअप तब होता है जब एक निर्दिष्ट सी फ़ंक्शन निष्पादन पर्यावरण द्वारा कहा जाता है।
5.1.2.1 मुक्त वातावरण
एक फ्रीस्टैंडिंग वातावरण में (जिसमें सी प्रोग्राम का निष्पादन ऑपरेटिंग सिस्टम के किसी भी लाभ के बिना हो सकता है), प्रोग्राम स्टार्टअप पर नाम और प्रकार के फ़ंक्शन को कार्यान्वयन-परिभाषित किया जाता है।
5.1.2.2 होस्टेड वातावरण
एक होस्ट किया गया वातावरण प्रदान नहीं किया जाना चाहिए, लेकिन यदि मौजूद हो तो निम्नलिखित विनिर्देशों के अनुरूप होगा।
5.1.2.2.1 प्रोग्राम स्टार्टअप
प्रोग्राम स्टार्टअप पर कहा जाने वाला फ़ंक्शन मुख्य नाम दिया गया है । [...] इसे इंट के रिटर्न प्रकार के साथ और कोई मापदंडों के साथ परिभाषित किया जाएगा [...] या दो मापदंडों के साथ [...] या समकक्ष या किसी अन्य कार्यान्वयन-परिभाषित तरीके से।
इनमें से, निम्नलिखित मनाया जाता है:
- C11 प्रोग्राम में एक फ्रीस्टैंडिंग या एक होस्ट किया गया निष्पादन वातावरण हो सकता है और मान्य हो सकता है।
- यदि यह एक फ्रीस्टैंडिंग है, तो एक मुख्य कार्य मौजूद नहीं है।
- अन्यथा, वहाँ एक वापसी के साथ होना चाहिए प्रकार int ।
एक फ्रीस्टैंडिंग निष्पादन वातावरण में, मैं तर्क दूंगा कि यह एक वैध कार्यक्रम है जो स्टार्टअप को ऐसा करने की अनुमति नहीं देता है, क्योंकि 5.1.2 में आवश्यक रूप से इसके लिए कोई फ़ंक्शन मौजूद नहीं है। एक होस्ट किए गए निष्पादन परिवेश में, जबकि आपका कोड मुख्य नाम की एक वस्तु का परिचय देता है , यह रिटर्न वैल्यू नहीं दे सकता है, इसलिए मैं तर्क दूंगा कि यह इस अर्थ में एक वैध कार्यक्रम नहीं है, हालांकि कोई भी पहले की तरह बहस कर सकता है कि यदि प्रोग्राम नहीं है निष्पादित होने का मतलब है (केवल उदाहरण के लिए डेटा प्रदान करना चाहते हैं), तो यह सिर्फ ऐसा करने की अनुमति नहीं देता है।
'इंट मेन है?' एक वैध C ++ प्रोग्राम?
संक्षिप्त उत्तर (मेरी राय): केवल तभी जब आपका कार्यान्वयन "फ्रीस्टैंडिंग निष्पादन वातावरण" का उपयोग करता है।
C ++ 14 से उद्धरण
3.6.1 मुख्य कार्य
एक कार्यक्रम में मुख्य नामक एक वैश्विक फ़ंक्शन शामिल होगा, जो कार्यक्रम की निर्दिष्ट शुरुआत है। यह कार्यान्वयन-परिभाषित है कि मुख्य कार्य को परिभाषित करने के लिए एक फ्रीस्टैंडिंग वातावरण में एक कार्यक्रम की आवश्यकता है या नहीं। [...] इसमें इंट का रिटर्न प्रकार होगा, लेकिन अन्यथा इसका प्रकार कार्यान्वयन-परिभाषित है। [...] मुख्य नाम अन्यथा आरक्षित नहीं है।
यहां, C11 मानक के विपरीत, फ्रीस्टैंडिंग निष्पादन पर्यावरण पर कम प्रतिबंध लागू होते हैं, क्योंकि किसी भी स्टार्टअप फ़ंक्शन का उल्लेख नहीं किया गया है, जबकि होस्ट किए गए निष्पादन वातावरण के लिए, मामला C11 के समान ही है।
दोबारा, मैं तर्क दूंगा कि होस्ट किए गए मामले के लिए, आपका कोड मान्य C ++ 14 प्रोग्राम नहीं है, लेकिन मुझे यकीन है कि यह फ्रीस्टैंडिंग केस के लिए है।
चूँकि मेरा जवाब केवल निष्पादन के माहौल पर विचार करता है, मुझे लगता है कि dasblinkenlicht द्वारा जवाब खेलने में आता है, जैसा कि अनुवाद के माहौल में होने वाला नामकरण पहले से होता है। यहाँ, मुझे इतना यकीन नहीं है कि उपरोक्त उद्धरण इतनी सख्ती से देखे गए हैं।
gcc -std=c99 -pedantic ...