Chinaunix首页 | 论坛 | 博客
  • 博客访问: 135762
  • 博文数量: 51
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 540
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-21 12:33
文章分类

全部博文(51)

文章存档

2011年(1)

2010年(5)

2009年(1)

2008年(12)

2007年(32)

我的朋友

分类: C/C++

2007-08-04 19:51:37

Extern C的作用


extern "C" 主要实现C++与C 的混合编程

  • extern "C"修饰的变量和函数是按照C 语言方式编译和连接
  • C++支持函数重载,而C不支持。函数被C++编译后在符号库中的名字与C语言的不同.
  例如,假设某个函数的定义为:

  void foo( int x, int y );

  该函数被C编译器编译后在符号库中的名字为_foo,而C++编译器则会产生像
  _foo_int_int 之类的名字(包含了函数名、函数参数数量及类型信息,
  C++就是靠这种机制来实现函数重载的)

extern "C" 的用法

  • 在C++中引用C 语言中的函数和变量,在包含C语言头文件时,需加extern "C"声明
  假如函数add由C语言实现的文件,而在另一个用C++写的文件引用此函数需要添加以下语句:

  extern "C" int add(int x, int y);

  • 在C中引用C++语言中的函数和变量时,C++的头文件需添加extern "C", 而在C 中应将C++中定义的extern"C"函数声明为extern类型
  假如函数add由C++语言实现的文件, 在另一个用C写的文件引用此函数需添加:

  extern "C" int add(int x, int y); ( C++文件 )
  extern int add(int x, int y); ( C文件 )
  
  • C语言不支持extern "C"

阅读(947) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~