#ifdef __cplusplus //__cplusplus是cpp中自定义的一个宏
extern
"C" {
//告诉编译器,这部分代码按C语言的格式进行编译,而不是C++的
#endif
/**** some declaration or so *****/
#ifdef __cplusplus
}
#endif
extern "C"有两层含义:被它修饰的目标是“extern”的;被它修饰的目标是“C”的。
为支持重载,C++编译函数名时会在函数名后加上参数类型。
C语言不支持重载,编译函数时只有函数名。
extern "C" 告诉编译器按C语言方式进行编译,编译出的函数符号只有函数名。
通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字extern声明。
与extern对应的是static,被它修饰的全局变量和函数只能在本模块中使用。
__cplusplus宏只在cpp文件中有定义,在c文件没有定义。头文件的__cplusplus宏,根据其包含的位置决定是否定义。