1、在C++中的使用形式
#ifdef __cplusplus
extern "C" {
#endif
/*...*/
#ifdef __cplusplus
}
#endif
2、使用作用
告诉C++编译器,被extern "C" {}修饰的 变量和函数 按照C语言的规则来编译和链接,以便实现C++和C的混合编程。
有人说,C++语言是C语言的超集,它兼容C,因而保留了部分过程式语言特点,可以在文件中定义不属于任何类的全局变量和函数,但总体来说C++的语法规则比C更严格。
extern 在C语言中的作用:
当其修饰函数时,表明该函数是外部存储类型,即该函数的作用域可以通过做外部声明而扩大到整个工程。
函数存储类型缺省情况下是extern类型,也就是我们通常定义过的一些函数那样,前面只有返回类型。
当修饰变量时,表明该变量外部变量,同函数一样,可以通过作外部声明被其他文件中的函数引用。
外部变量有定义性说明和引用性说明,外部变量在程序编译时分配内存,在整个程序结束后被回收。
编译器把第一次遇到的外部变量说明当做是定义性说明(分配内存并初始化),将以后遇到的同名外部变量当做引用性说明(不分配内存)。
3、对与C++和C,编译阶段对函数的处理方式
C++为面向对象语言,支持函数重载,重载既是静态绑定,在编译阶段对函数参数类型和个数做检查,以便在符号表中形成对应的符号。
而C语言是过程式语言,不支持重载,对同一个函数进行编译,产生的符号与C++不同。
4、C++和C混合编程时 使用extern "C"的方法
C++中引用C语言变量和函数 在cpp文件中包含c语言头文件时,如1中所写
注意:extern "C"只出现在cpp文件中,c文件中,是不理解这个说明的
C语言中引用C++变量和函数
在cpp头文件中 函数前面添加 extern "C"
在引用该函数的c文件中 对该函数做extern声明
阅读(411) | 评论(0) | 转发(0) |