extern "C" {} 来沟通C和C++

比如说你用C++开发了一个DLL库,为了能够让C语言也能够调用你的DLL输出(Export)的函数,你需要用extern "C"来强制编译器不要修改你的函数名。
通常,在C语言的头文件中经常可以看到类似下面这种形式的代码: 

#ifdef __cplusplus 
extern "C" { 
#endif 

/**** some declaration or so *****/ 

#ifdef __cplusplus 
  } 

#endif /* end of __cplusplus */ 

比如void foo1();
如果c文件包含了它,生成的object文件中此函数被命名为 c_foo1,
而在cpp文件中包含了它,生成的object中此函数命名为cpp_foo1,使用extern "C"后,可以强制使其仍然为"c_foo1"。
这么做的目的是为了在c和cpp中互相调用函数命名一致,否则会出现链接错误。
原文地址:https://www.cnblogs.com/jaydenhpj/p/3681945.html