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"了。

 

posted @ 2020-05-13 16:43  STEVEN-SUN  阅读(612)  评论(0编辑  收藏  举报