extern "C"

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*/

 

posted @ 2016-05-02 13:58  M_Lion  阅读(102)  评论(0)    收藏  举报