放入 C++ 代码到底有什么作用extern "C"?
extern "C"
例如:
extern "C" { void foo(); }
extern "C"使 C 中的函数名具有 C 链接(编译器不会破坏名称),以便客户端 C 代码可以使用仅包含函数声明的 C 兼容头文件链接到(使用)您的函数。您的函数定义包含在二进制格式(由您的 C 编译器编译)中,然后客户端 C 链接器将使用 C 名称链接到该格式。
由于 C 有函数名重载,而 C 没有,C 编译器不能只使用函数名作为链接的唯一 id,因此它通过添加有关参数的信息来破坏名称。AC 编译器不需要修改名称,因为您不能在 C 中重载函数名称。当您在 C 中声明函数具有extern "C"链接时,C 编译器不会将参数/参数类型信息添加到用于链接的名称中。
正如您所知,您可以extern "C"显式指定与每个单独的声明/定义的链接,或者使用块将一系列声明/定义分组以具有一定的链接:
extern "C" void foo(int); extern "C" { void g(char); int i; }