C 语言编写的语句在C++文件中用C编译器的方式去编译的方法声明。
C 语言编写的语句在C++文件中用C编译器的方式去编译的方法声明。
例如在下面的PIE_VECT.h 中看到 如下图
格式为:
#ifdef __cplusplus
Extern "C" {
#endif
// 用户书写内容
#ifdef __cplusplus
}
#endif /* extern "C" */
以上话语的意思是: 为了再C++代码中调用用C写成的文件,就需要用 extern "C" 来告诉编译器 :这是用C写成的文件。请用C的方式来链接他们,
(为什么不用C++的方式编译呢。因为C++支持函数的重载,而C不支持函数的重载。两者语言的编译规则不一样,编译器对函数名的处理方法也不一致)。
所以 extern "C" 就是告诉编译器用C的方式编译,那么你既然这么要求,大概就是因为当前此语句在一个C++文件中,但是我们的文件到底是被C还是C++使用,只有被调用了后才知道,所以就要在头文件中加这种ifdef, 表示如果被C++调用,那么就按照C语法的模式进行编译,否则 也就不用定义 extern "C"了。