在C/C++的头文件中,经常看到 extern "C"的修饰,究竟有什么作用呢?那就要从C与C++的符号链接说起。因为C++支持函数重载,可链接文件的函数签名必定带有参数和返回值等类型信息,而C的没有。所以需要某种方法告诉编译器,这个可链接文件是C还是C++的。因此,extern "C"就诞生了。extern "C"的使用方法:
-
C++调用C函数:
// max.h extern int max(int, int); // max.c int max(int a, int b) {...} // main.cpp extern "C" { #include "max.h" }
-
C调用C++函数:
// max.h extern "C" { int max(int, int); } // max.cpp int max(int a, int b) {...} // main.c extern int max(int, int);