एक जगह है जहाँ extern "सी" समझ में आता है जब आप एक पुस्तकालय है कि सी कोड के रूप में संकलित किया गया लिंक कर रहे हैं है।
extern "C" {
#include "c_only_header.h"
}
अन्यथा, आप लिंकर त्रुटियों क्योंकि पुस्तकालय सी-लिंकेज (_myfunc), लेकिन सी ++ संकलक, जो सी ++ कोड के रूप में पुस्तकालय के हेडर संसाधित साथ कार्यों में शामिल हो सकती है, उत्पन्न कार्यों के लिए सी ++ प्रतीक नाम (" _myfunc @ XAZZYE "- इसे प्रत्येक कंपाइलर के लिए मैंगलिंग और अलग कहा जाता है)।
एक और जगह जहां बाहरी "सी" का उपयोग किया जाता है, सी ++ में लिखे गए कार्यों के लिए सी लिंकेज की गारंटी भी है।
extern "C" void __stdcall PrintHello() {
cout << "Hello World" << endl;
}
ऐसे प्रकार्य एक DLL को निर्यात किया जा सकता है और फिर अन्य प्रोग्रामिंग भाषा से प्रतिदेय होगा, क्योंकि संकलन इसके नाम वध नहीं होंगे। यदि आपने एक ही फ़ंक्शन का एक और अधिभार जोड़ा है, उदाहरण के लिए।
extern "C" void __stdcall PrintHello() {
cout << "Hello World" << endl;
}
extern "C" void __stdcall PrintHello(const char *name) {
cout << "Hello, " << name << endl;
}
सबसे compilers तो यह पकड़ है और इस तरह अपने DLL-सार्वजनिक कार्यों में समारोह भार के उपयोग करने से रोका जा सके।
http://stackoverflow.com/questions/67894/why-do-we-need-extern-c-include-foo-h-in-c – Aamir
संबंधित डुप्लिकेट: http://stackoverflow.com/questions/1041866/बाहरी-सी http://stackoverflow.com/questions/717729/does-extern-c-have-any-effect-in-c http://stackoverflow.com/questions/496448/how-to- ठीक से प्रयोग-निर्वासन-keword-इन-सी / –