extern "C":
C++语言提供,用来兼容C语言,实现C++代码调用C语言代码。extern "C"{代码段},代码段编译器会按照C语言的方式进行编译。(C++函数标识和C函数标识生成规则不同,所以在自己的环境里无法找到调用函数)
extern: 可以置于变量或函数前,以表示变量或函数的定义在别的文件中可以使用。提示编译器遇到该函数时在其他文件中寻找其定义。extern也可用于进行连接指定。
extern "C"使用:
1、C++调用C的接口:给C++文件添加extern "C"。(.cpp文件调用.c文件CShow())
//.cpp文件调用.c文件中的CShow
extern "C"
{
//.cpp代码...CShow();...//
}
2、C调用C++的接口:(建立中间.cpp文件将CPPShow()函数以C语言的方式编译,再调用中间文件生成的CShow()函数)
//.cpp中间文件
extern void CPPShow();//?Show@@YA@Z
extern "C"
{
void CShow()//_CShow
{
CPPShow();
}
}
3、未知文件类型都以C语言编译:
#ifdef __cplusplus //如果文件包含_cplusplus(C++语言的宏),extern "C"{ 按C语言编译
extern "C"
{
#endif
//如果文件不是.cpp文件,则继续按C语言编译
void CShow()
{
printf("Show1.c : void CShow()");
}
//如果文件不是.cpp文件,则继续按C语言编译
#ifdef __cplusplus //如果文件包含_cplusplus(C++语言的宏),} 按C语言编译
}
#endif