खैर, यह कर सकता है ।
उदाहरण के लिए, योजना 9 में प्रयुक्त सी की बोली में ऑपरेटिंग सिस्टम mainको आमतौर पर एक voidफ़ंक्शन के रूप में घोषित किया जाता है , लेकिन फ़ंक्शन को स्ट्रिंग पॉइंटर पास करके कॉलिंग वातावरण में निकास स्थिति वापस आ जाती है exits()। खाली स्ट्रिंग सफलता को दर्शाता है, और कोई भी खाली-खाली स्ट्रिंग किसी प्रकार की विफलता को दर्शाता है। यह एक परिणाम लौटने के द्वारा लागू किया जा सकता था ।mainchar*
और निश्चित रूप से एक floatया doubleबाहर निकलने की स्थिति के साथ एक प्रणाली को लागू करना संभव होगा ।
तो क्यों int? यह सिर्फ एक सम्मेलन की बात है - और ऑपरेटिंग सिस्टम और उनके तहत चलने वाले कार्यक्रमों में एक आम सम्मेलन का पालन करने का एक बहुत बड़ा मूल्य है।
यूनिक्स कन्वेंशन एक पूर्णांक स्थिति कोड का उपयोग करने के लिए है, जिसमें 0 को सफलता और नॉन-जीरो डिनोटिंग विफलता को दर्शाया जाता है (क्योंकि आमतौर पर सफल होने का केवल एक ही तरीका है, लेकिन असफल होने के कई तरीके)। मुझे नहीं पता कि यह सम्मेलन यूनिक्स के साथ उत्पन्न हुआ था या नहीं; मुझे संदेह है कि यह पहले के ऑपरेटिंग सिस्टम से आया था।
फ़्लोटिंग-पॉइंट एक अधिक कठिन सम्मेलन होगा, क्योंकि (ए) फ़्लोटिंग-पॉइंट समर्थन सार्वभौमिक नहीं है, (बी) फ़्लोटिंग-पॉइंट मानों और त्रुटि स्थितियों के बीच मैपिंग को परिभाषित करना अधिक कठिन है, (सी) विभिन्न सिस्टम विभिन्न फ़्लोटिंग का उपयोग करते हैं- बिंदु अभ्यावेदन, और (घ) आपके कार्यक्रम की निकास स्थिति में एक गोल त्रुटि को ट्रैक करने के मज़े की कल्पना करें। दूसरी ओर, इंटीजर, त्रुटि कोड की गणना करने के लिए खुद को बहुत अच्छी तरह से उधार देते हैं।
योजना 9, जैसा कि मैंने उल्लेख किया है, तार का उपयोग करता है, लेकिन यह मेमोरी प्रबंधन, चरित्र एन्कोडिंग, आदि के लिए कुछ जटिलता को लागू करता है, यह जहाँ तक मुझे पता है, एक नया विचार जब योजना 9 ने इसे लागू किया था, और यह मौजूदा को प्रतिस्थापित नहीं करता था व्यापक सम्मेलन।
(संयोग से, C ++ mainकर सकते हैं केवल वापसी int, और सी में void mainही अगर संकलक विशेष रूप से इसका समर्थन करता है की अनुमति है। कई compilers बहुत जोर से यदि आप लिखना शिकायत नहीं है void main, लेकिन यह कहना केवल एक मामूली अतिशयोक्ति नहीं है कि यह गलत ।)