हां, सी ++/सीएलआई का एक बहुत ही विशिष्ट लक्ष्य उपयोग है, भाषा (और इसका कंपाइलर, सबसे अधिक) कोड लिखना बहुत आसान बनाता है जिसे अप्रबंधित कोड के साथ इंटरऑप करने की आवश्यकता होती है। इसमें प्रबंधित और अप्रबंधित प्रकारों के बीच मार्शलिंग के लिए अंतर्निहित समर्थन है। इसे आईजेडब्लू (इट जस्ट वर्क्स) कहा जाता था, आजकल सी ++ इंटरऑप कहा जाता है। अन्य भाषाओं को पी/इनवॉक मार्शलर का उपयोग करने की आवश्यकता है जो अक्षम हो सकती है और सी ++/सीएलआई क्या कर सकती है इसकी तुलना में सीमित क्षमताएं हैं।
यदि आपको देशी सी ++ के साथ इंटरऑप करने की आवश्यकता है, तो कक्षाएं जिनमें फ़ंक्शन हैं और नए की आवश्यकता है और कक्षा के उदाहरण को नष्ट/नष्ट करने के लिए कीवर्ड हटाएं, तो आपके पास सी ++/सीएलआई का उपयोग करने के अलावा कोई विकल्प नहीं है। Pinvoke ऐसा नहीं कर सकता है, केवल सी ++ संकलक जानता है कि आवंटित करने के लिए कितनी मेमोरी और this
पॉइंटर को सही तरीके से कैसे ठीक किया जाए।
.NET ढांचे में सी ++/सीएलआई में लिखा गया कोड शामिल है, विशेष रूप से System.Data और WPF के प्रेजेंटेशनकोर में। यदि आपके पास अप्रबंधित इंटरऑप की ज़रूरत नहीं है या लीगेसी कोड बेस के साथ काम नहीं करना है तो सी ++/सीएलआई चुनने के कुछ कारण हैं। सी # या वीबी.नेट बेहतर विकल्प हैं। सी ++/सीएलआई का फीचर सेट 2005 के आसपास जमे हुए हो गया है, इसमें लैम्बडास या लिंक सिंटैक्स जैसे हालिया जोड़े के लिए कोई समर्थन नहीं है। न ही आईडीई सी # और वीबी.नेट आईडीई में उपलब्ध कई घंटियां और सीटी का समर्थन करता है। उल्लेखनीय है कि VS2010 प्रारंभ में सी ++/सीएलआई के लिए IntelliSense समर्थन के बिना जहाज जाएगा। वहां एक चुंबन-मौत का थोड़ा सा।
अद्यतन: वीएस2012 में पुनरुद्धारित, IntelliSense समर्थन वापस आ गया है। सी ++/सीएक्स के लिए कम से कम धन्यवाद में, एक भाषा विस्तार जो सी ++ में WinRT ऐप्स लिखने को सरल बनाता है। इसका वाक्यविन्यास सी ++/सीएलआई के समान है। विंडोज फॉर्म प्रोजेक्ट टेम्पलेट हटा दिए गए थे, डिजाइनर हालांकि अभी भी काम करता है। वीएस2012 में नया डिबगिंग इंजन सी ++/सीएलआई का समर्थन नहीं करता है, आपको टूल्स + विकल्प, डिबगिंग, जनरल में "प्रबंधित संगतता मोड" विकल्प चालू करना होगा।
स्रोत
2009-12-19 15:54:35
अच्छा सवाल। और आपने आधे भाषाओं का भी उल्लेख नहीं किया था। मेरा मतलब है, डब्ल्यूटीएफ एफ # है? और जे #? क्या हमें पूरे वर्णमाला की आवश्यकता है या क्या? –
@ कैमिलो मार्टिन: जे # अब तक बहुत अधिक इतिहास है और एफ # ओकंपल पर आधारित एक कार्यात्मक भाषा है। –
दिलचस्प सवाल। आज बहस कैसे खड़ी है? – Independent