extern "C"是一种用于在C++代码中声明C语言风格的函数接口的方法。在C++中,函数的名称会经过名称修饰(name mangling),以便支持函数重载和其他特性。然而,C语言没有名称修饰,因此在 C++ 代码中调用C语言函数时,需要使用extern "C"来告诉编译器不要对函数名进行修饰。
如果在C++代码中需要调用一个由C语言编写的函数时,可以使用extern "C"来声明这个函数,以确保编译器不会对函数名进行修饰,从而使得C++代码可以正确地调用这个C函数。
如果需要编写C++代码,并且希望这些代码能够与纯C代码进行兼容时,通常也会使用extern "C"来确保C++代码中的函数接口与C代码兼容。在这种情况下,会在C++代码中使用extern "C"来声明 C++函数,以便在链接时能够正确地与C代码进行交互。
示例代码如下,
#ifdef __cplusplus
extern "C" {
#endif
void my_c_function();
#ifdef __cplusplus
}
#endif
在示例代码中,extern "C"包裹了C函数的声明,这样在C++代码中包含这个头文件时,编译器就知道不要对my_c_function进行名称修饰。