के बजाय C++ में प्लगइन इंटरफ़ेस क्यों सेट करना चाहिए, मेरे previousquestions के परिणामस्वरूप मैंने खुद से पूछा: क्या प्लगइन सिस्टम के लिए सी ++ इंटरफेस स्थापित करने के लिए यह उपयोगी है? निम्नलिखित बातों पर इसके खिलाफ बोल रहे हैं:मुझे
- विभिन्न compilers और उनके संस्करणों के बीच कोई आम ABI, स्मृति
- कोई प्रत्यक्ष वर्ग निर्यात में वस्तुओं की कोई आम लेआउट। आपको कारखानों और विनाशकों को निर्यात करना होगा। समस्याएं उत्पन्न होती हैं यदि आपकी ऑब्जेक्ट्स अन्य ऑब्जेक्ट्स द्वारा आयोजित की जाती हैं जो केवल
delete
हैं, उदाहरण के लिए स्मार्ट पॉइंटर्स। - एसटीएल के विभिन्न कार्यान्वयन, आप बूस्ट
की तरह इस्तेमाल किया पुस्तकालयों के
std::list<T>
पारित नहीं कर सकते हैं सी ++ भाषा आप लगभग अंत के शेष भागों के लिए अपने आप को नियंत्रित करते हैं "सी सबसेट" के साथ। क्या सी ++ का उपयोग करने के लिए कोई अंक बोल रहा है? क्यूटी-टूलकिट उल्लिखित समस्याओं को कैसे हल करता है? टिप्पणी: मैं ज्यादातर लिनक्स सिस्टम का जिक्र कर रहा हूं। फिर भी मैं अन्य प्लेटफॉर्म पर समाधान में रूचि रखता हूं।
अतिरिक्त प्रश्न: सी इंटरफ़ेस का उपयोग करने में समस्याएं क्या हैं? struct
एस का मेमोरी लेआउट? सी के कौन से भाषा भागों से बचा जाना चाहिए?
सी मानक या तो एबीआई निर्दिष्ट नहीं करता है। असल में, जिन मुद्दों के बारे में आप शिकायत करते हैं, वे सी ++ के बराबर सी पर लागू हो सकते हैं। –
हां, यह ध्यान देने योग्य है कि मानक आमतौर पर ओएस द्वारा निर्धारित किया जाता है, और इसके सी कंपाइलर्स के साथ क्या करने के लिए कुछ भी नहीं हो सकता है या नहीं। विंडोज़ पर यह stdcall है। –
@Neil। सी मानक एक अच्छी तरह से परिभाषित एबीआई है। यही कारण है कि सी कई अन्य भाषाओं के बीच ग्लू है। –