मेरे पास C ++ लाइब्रेरी है जो डेटा के प्रबंधन के लिए विभिन्न कक्षाएं प्रदान करती है। मेरे पास पुस्तकालय के लिए स्रोत कोड है।
मैं C फ़ंक्शन कॉल का समर्थन करने के लिए C ++ API का विस्तार करना चाहता हूं ताकि लाइब्रेरी का उपयोग C कोड और C ++ कोड के साथ एक ही समय में किया जा सके।
मैं GNU टूल चेन (gcc, glibc, आदि) का उपयोग कर रहा हूं, इसलिए भाषा और आर्किटेक्चर समर्थन कोई समस्या नहीं है।
क्या कोई कारण है कि यह तकनीकी रूप से संभव नहीं है?
क्या कोई गोटा है जिसे मुझे देखने की आवश्यकता है?
क्या इस बारे में संसाधन, उदाहरण कोड और / या दस्तावेज उपलब्ध हैं?
कुछ और बातें जो मुझे पता चली हैं:
- अपने C ++ हेडर को लपेटने के लिए निम्नलिखित का उपयोग करें जिन्हें C कोड द्वारा उपयोग करने की आवश्यकता है।
#ifdef __cplusplus
extern "C" {
#endif
//
// Code goes here ...
//
#ifdef __cplusplus
} // extern "C"
#endif
- सी। थिंक PIMPL सिद्धांत द्वारा शामिल नहीं किए गए अलग हेडर फ़ाइलों में "वास्तविक" C ++ इंटरफेस रखें ।
#ifndef __cplusplus #error
सामान का उपयोग करने से यहां किसी भी पागलपन का पता लगाने में मदद मिलती है। - सी कोड में नाम के रूप में सी ++ पहचानकर्ताओं से सावधान
- C और C ++ कंपाइलर के बीच आकार में भिन्नता। यदि आप GNU टूल चेन का उपयोग कर रहे हैं, तो संभवतः कोई समस्या नहीं है, लेकिन फिर भी, सावधान रहें।
संरचना के लिए निम्नलिखित फ़ॉर्म का पालन करें ताकि सी भ्रमित न हो।
typedef struct X { ... } X
फिर C ++ ऑब्जेक्ट्स के आस-पास से गुजरने के लिए पॉइंटर्स का उपयोग करें, उन्हें बस C को स्ट्रक्चर X के रूप में घोषित करना होगा जहां X C ++ ऑब्जेक्ट है।
यह सब एक मित्र का शिष्टाचार है जो C ++ में एक जादूगर है।