http://my.oschina.net/hnuweiwei/blog/261002
代码在vs2015上有问题啊!
extern "c"
c++语言支持重载,c语言不支持重载。函数被c++编译后在库中的名称与c不一样。假设某个函数原型为void foo(int x,int y), 被c编译器编译后名字可能为_foo, 在c++编译器编译后的名字可能为_foo_int_int
extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。这样就使c++与c尽可能的兼容。
c++标准头文件都有类似的结构
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#ifndef __INCvxWorksh /*防止头文件被重复引用*/ #define __INCvxWorksh #ifdef __cplusplus //告诉编译器,这部分代码按C语言的格式进行编译,而不是C++的,__cplusplus是cpp中自定义的一个宏 extern "C" { #endif /*…*/ //用c进行编译的代码 #ifdef __cplusplus } #endif #endif /*end of __INCvxWorksh*/ |