extern“C”如何在C ++中工作?

How does extern “C” work in C++?

本问题已经有最佳答案,请猛点这里访问。

我看到C++中的一些代码使用EDOCX1,0,在文件的开头这样:

1
2
3
#ifdef __cplusplus
extern"C" {}
#endif

这是什么意思?它是如何工作的?


它用于通知编译器禁用在括号内定义的函数的C++名称修改。http://en.wikipedia.org/wiki/name_mangling


可能不是这样,但更像是:

1
2
3
4
5
6
7
8
9
#ifdef __cplusplus
extern"C" {
#endif

//some includes or declarations

#ifdef __cplusplus
}
#endif

它告诉编译器使用C名称管理指令中声明的任何内容。

你现在拥有它的方式是:

1
2
3
#ifdef __cplusplus
extern"C" {}
#endif

只是死代码。


Extern"C"—通知编译器,所记函数是用C样式编译的。


它指定了一个链接规范。它告诉链接器如何链接代码。

当你想混合C和C++代码时,它是有用的。