#ifdef __cplusplus extern "C" { #endif /* __cplusplus */

#ifdef __cplusplus
extern "C" {
#endif  /* __cplusplus */
//.....

#ifdef __cplusplus
}
#endif  /* __cplusplus */

在头文件中我们经常看到这个格式,但是这是干嘛用的呢?
C++编译器在编译C++源文件是会默认为定义了__cplusplus
因此如果是c++编译器的话,会在代码两段加上

extern "C"{
//.....
}

C++支持函数重载、命名空间等特性,于是乎在编译过程中相同的函数名、变量等会经历名字改编的过程,在原来的标记符上加上另外一些信息,从而得已区分。
加上extern就是告诉编译器不要进行名字改编,这样同一个文件对于就可以用于c程序也可以用于C++程序。

你可能感兴趣的:(杂记)