Avatar ·

C++ में extern "C" क्या करता है और C लाइब्रेरी के साथ काम करते समय इसकी आवश्यकता क्यों है?

नमस्ते! मैंने C++ सीखना शुरू किया है और `extern "C"` कंस्ट्रक्शन देखा, जो अक्सर हेडर फाइलों में दिखता है। उदाहरण के लिए, SDL जैसी लाइब्रेरी या पुराने C फंक्शन को जोड़ते समय। यहाँ एक उदाहरण है जो मैंने एक आर्टिकल में पाया: ```cpp // my_header.h #ifdef __cplusplus extern "C" { #endif void my_c_function(int x); int another_c_function(const char* str); #ifdef __cplusplus } #endif ``` मैं समझता हूँ कि यह लिंकिंग और फंक्शन नामों से संबंधित है, लेकिन विवरण समझ नहीं पा रहा। विशेष रूप से मुझे जानना है: 1. C++ में C फंक्शन का उपयोग करते समय `extern "C"` के बिना लिंकिंग एरर क्यों हो सकते हैं? 2. "name mangling" क्या है और यह इस समस्या से कैसे जुड़ा है? 3. डिक्लेरेशन को `#ifdef __cplusplus` में क्यों लपेटा जाता है? अगर मैं C++ में लिख रहा हूँ, तो __cplusplus हमेशा डिफाइन होता है, है ना? 4. क्या मैं अपने C++ फंक्शन के लिए `extern "C"` का उपयोग कर सकता हूँ, अगर मैं चाहता हूँ कि वे C कोड से एक्सेसिबल हों? सरल उदाहरणों के साथ समझाने के लिए आभारी रहूँगा। मैंने कोशिश की