जहां भी व्यावहारिक हो, मानकों को मानना चाहिए। इस प्रकार,
void main
जो वैध सी या सी ++ कभी नहीं लिखना नहीं है, लेकिन बजाय
int main
इसी के साथ
लिखते हैं, अपने कोड उदाहरण के साथ संकलन कर सकते हैं जी ++ (सामान्य कंपाइलर विकल्पों के साथ)।
void main
को देखते हुए मुझे एक विंडोज वातावरण पर संदेह है। और वैसे भी, विंडोज वातावरण में अपने प्रोग्राम के उपयोग का समर्थन करने के लिए, आपको Windows में main
तर्कों का उपयोग नहीं करना चाहिए। वे * निक्स में काम करते हैं क्योंकि वे उस वातावरण में और उसके लिए डिजाइन किए गए थे; वे विंडोज़ में सामान्य काम नहीं करते हैं, क्योंकि डिफ़ॉल्ट रूप से (बहुत मजबूत कन्वेंशन द्वारा) वे विंडोज एएनएसआई के रूप में एन्कोड किए जाते हैं, जिसका अर्थ है कि वे उपयोगकर्ता के मौजूदा लोकेल के बाहर वर्णों के साथ फ़ाइल नाम एन्कोड नहीं कर सकते हैं।
तो विंडोज़ के लिए आप GetCommandLine
एपीआई फ़ंक्शन और इसकी बहन पार्सिंग फ़ंक्शन का बेहतर उपयोग करते हैं। पोर्टेबिलिटी के लिए इसे कुछ कमांड लाइन तर्क मॉड्यूल में बेहतर ढंग से encapsulated किया जाना चाहिए। फिर आपको विंडोज़ में wchar_t
और * nix & hellip में char
का उपयोग करने की रोचक समस्या से निपटने की आवश्यकता है;
वैसे भी, मुझे संबंधित * निक्स एपीआई, या यहां तक कि अगर कोई है, लेकिन Google पर भी यकीन नहीं है। सबसे बुरे मामले में, * निक्स के लिए आप हमेशा main
से कमांड लाइन तर्क मॉड्यूल प्रारंभ कर सकते हैं। * निक्स के लिए कुरूपता सी ++ के सबसे गैर पोर्टेबल, ओएस-विशिष्ट निर्माण, अर्थात् मानक main
के साथ पोर्टेबिलिटी का समर्थन करने की आवश्यकता से सीधे उत्पन्न होती है।
स्रोत
2012-10-12 16:16:45
मैं पूरी तरह से 'मुख्य मुख्य' पर 'मुख्य मुख्य' से सहमत हूं। हालांकि, दूसरी टिप्पणी मुझे छोड़ देता है ... bemused। विंडोज़ के अलावा कौन सी प्रणाली मानक सी ++ सम्मेलन के साथ 'मुख्य()' के लिए एक समस्या है? मुझे एक के बारे में पता नहीं है, इसलिए मानक सम्मेलन को 'गैर पोर्टेबल' और 'ओएस-विशिष्ट' के रूप में ओटीटी लगता है। –
@ जोनाथन लेफ्लर: मुझे विंडोज़ के अलावा किसी भी सामान्य रूप से प्रयुक्त सिस्टम से अवगत नहीं है, जहां 'मुख्य' तर्क काम नहीं करते हैं (अंग्रेजी वर्णमाला शुद्ध ASCII पाठ के अलावा)। फिर भी, एक सुविधा जो विंडोज ** में काम नहीं करती है ** गैर पोर्टेबल है, और यूनिक्स-भूमि ** के लिए डिज़ाइन की गई सुविधा ** ओएस-विशिष्ट है। और 'मुख्य' तर्क सम्मेलन दोनों विंडोज़ में काम नहीं करते हैं (यानी गैर पोर्टेबल है), और यूनिक्स-भूमि (यानी ओएस-विशिष्ट है) के लिए डिज़ाइन किया गया है, और उन दो पहलुओं को दृढ़ता से जुड़ा हुआ है। इसके बारे में बिल्कुल कुछ भी मनोरंजक नहीं है। मैं केवल अपनी दृढ़ता के लिए बदसूरत राजनीतिक कारणों के बारे में सोच सकता हूं। –