Chinaunix首页 | 论坛 | 博客
  • 博客访问: 114517
  • 博文数量: 83
  • 博客积分: 2531
  • 博客等级: 少校
  • 技术积分: 865
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-31 20:40
文章分类

全部博文(83)

文章存档

2011年(7)

2010年(76)

我的朋友

分类:

2010-04-12 17:45:50

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) |
给主人留下些什么吧!~~