Avatar ·

C++中的extern "C"是做什么的,为什么需要它?

大家好!我写C++的时间不长,在使用C语言库(比如某个旧的图形库)的过程中,我经常遇到`extern "C"`这个结构。我在头文件中看到它,但不太明白它的作用。 例如,我有这样的代码: ```cpp // mylib.h #ifdef __cplusplus extern "C" { #endif void my_c_function(int x); #ifdef __cplusplus } #endif ``` 或者当我自己包含一个C语言头文件时: ```cpp // main.cpp extern "C" { #include "clibrary.h" } ``` 我读到这与“name mangling”(二进制文件中函数的命名方式)有关,但我不明白具体是如何工作的。为什么没有`extern "C"`,我的程序就找不到C库中的函数,并出现类似“undefined reference”的链接错误?毕竟我已经声明了它! 请给新手解释一下:这个结构具体做了什么,在哪些情况下是必须的,以及它如何影响编译和构建过程。