.mm
.m
से अधिक "सामान्य" उद्देश्य-सी के लिए उपयोग करने का प्रमुख नुकसान यह है कि संकलन समय उद्देश्य-सी ++ के लिए काफी अधिक हैं। ऐसा इसलिए है क्योंकि सी ++ कंपाइलर सी कंपाइलर से अधिक समय लेता है। एक्सकोड 3.2 और उच्चतर के साथ, उद्देश्य-सी कोड उद्देश्य-सी/सी संकलन समय को काफी तेज़ करने के लिए Clang फ्रंटएंड टूल श्रृंखला का उपयोग कर सकता है। चूंकि क्लैंग अभी तक उद्देश्य-सी ++/सी ++ का समर्थन नहीं करता है, इससे आगे दोनों के बीच संकलन के समय में अंतर बढ़ जाता है।
डिफ़ॉल्ट रूप से .m
का उपयोग करने की बेहतर रणनीति है। यदि आपको बाद में विकास में उद्देश्य-सी ++ का उपयोग करने की आवश्यकता है, तो .mm
एक्सटेंशन का उपयोग करने के लिए फ़ाइल का नाम बदलने में कोई हानि नहीं है। यदि आप एक्सकोड के भीतर से हैं, तो परियोजना को स्वचालित रूप से नई नामित फ़ाइल का उपयोग करने के लिए अपडेट किया जाएगा।
बेशक सभी मानक चेतावनी लागू होती है जब आप उद्देश्य-सी ++ बनाम उद्देश्य-सी प्रदर्शन को रन टाइम पर तुलना करने का प्रयास करते हैं। चूंकि उद्देश्य-सी ++ एक सी ++ सुपरसेट है, जबकि उद्देश्य-सी एक सी सुपरसेट है, आप रनटाइम पर प्रदर्शन ट्रेडऑफ के साथ प्रत्येक दो अलग-अलग भाषाओं से निपट रहे हैं। यह देखते हुए कि आप ऑब्जेक्टिव-एक्स का उपयोग कर रहे हैं, आप संभवतः उपयोगकर्ता-स्तरीय एप्लिकेशन (सिस्टम स्तर ऐप नहीं) लिख रहे हैं और सी और सी ++ के बीच प्रदर्शन में अंतर संभवतः कोड कुशल एल्गोरिदम कोड करने की आपकी क्षमताओं से पूरी तरह से निर्धारित किया जा सकता है प्रत्येक भाषा। यदि आप सी ++ डेवलपर हैं, तो संभवतः आप सी और वीजा के विपरीत कोड बेहतर होंगे। तो, हमेशा के रूप में, नौकरी के लिए उपयुक्त उपकरण का उपयोग करें।
संदर्भ के लिए, आप भी इस जवाब में रुचि हो सकती: C vs C++ (Objective-C vs Objective-C++) for iPhone
ऑब्जेक्टिव-सी अद्यतन फ़र, 17, 2012 Xcode 4.0 के रूप में (LLVM 3.0 के साथ), बजना का समर्थन किया है ++। यहां तक कि सी ++ 11 समर्थन अभी भी काफी मजबूत है।
स्रोत
2010-02-23 20:08:07
तो आईएम/ओबीजे-सी ++ विकास के लिए एमएम एक्सटेंशन अनिवार्य रूप से बहिष्कृत है? – Sam
भी, क्यों जीसीसी सिर्फ ओब्जे-सी ++ मानता है कि आर्किटेक्चर समर्थित है? कुछ फ़ाइलों से सी ++ कोड को अयोग्य घोषित करके क्या प्राप्त होता है? – Sam
.m एक्सटेंशन को बहिष्कृत नहीं किया गया है, वास्तव में यह डिफ़ॉल्ट है। मान लें कि ओबीजेसी ++ एक बुरा विचार है क्योंकि कुछ ऐसे मामले हैं जहां सी ++ सी से अलग है (प्रतीक मैंगलिंग सबसे ज्यादा दिखाई देती है, लेकिन कई अन्य हैं)। .c फ़ाइलों में C++ को अनुमति देना उतना ही गलत होगा - वे दो अलग-अलग भाषाएं हैं। – rpetrich