为什么c++源代码可以在没有extern“C”的情况下调用c代码?

Jef*_* Li 2 c c++ linux

这是一个调用linux c函数的cpp应用程序。我用 g++ 4.7 在 linux 中编译并运行它。有用。我不擅长c++。但我听说当你想从c++源文件中调用c函数时,你需要声明'extern“C”'。为什么这个程序有效?

#include <unistd.h>
#include <iostream>

using namespace std;

int main(int argc, const char **argv) {
    rmdir("t");
    cout << "Hello" << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

eca*_*mur 5

头文件unistd.h的编写是为了与C++兼容。如果你看一下它的内部,你会发现类似的东西:

#ifdef __cplusplus
extern "C" {
#endif

...

#ifdef __cplusplus
} // extern "C"
#endif
Run Code Online (Sandbox Code Playgroud)

如果您所在的平台unistd.h未以这种方式受到保护,那么您需要使用extern "C"around include。