Chinaunix首页 | 论坛 | 博客
  • 博客访问: 607112
  • 博文数量: 353
  • 博客积分: 1104
  • 博客等级: 少尉
  • 技术积分: 1457
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-23 23:02
个人简介

1、刚工作时做Linux 流控;后来做安全操作系统;再后来做操作系统加固;现在做TCP 加速。唉!没离开过类Unix!!!但是水平有限。。

文章存档

2015年(80)

2013年(4)

2012年(90)

2011年(177)

2010年(1)

2009年(1)

分类:

2011-10-24 13:46:37

   在C++程序中调用被C编译器编译后的函数,为什么要加extern "C"?

    C++语言支持函数重载,C语言不支持函数重载,函数被C++编译器编译后在
库中的名字与C语言的不同,假设某个函数原型为:
  1. void foo(int x, inty);
该函数被C编译器编译后在库中的名字为:
  1. _foo
而C++编译器则会产生像:
  1. _foo_int_int
之类的名字。为了解决此类名字匹配的问题,C++提供了C链接交换指定符号 extern "C"。


eg:


  1. #ifdef __cplusplus
  2. #if __cplusplus
  3. extern "C" {
  4. #endif
  5. #endif
  6. ...
  7. ...
  8. ...
  9. #ifdef __cplusplus
  10. #if __cplusplus
  11. }
  12. #endif
  13. #endif
阅读(367) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~