Chinaunix首页 | 论坛 | 博客
  • 博客访问: 281611
  • 博文数量: 68
  • 博客积分: 3061
  • 博客等级: 中校
  • 技术积分: 652
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-27 11:39
文章分类

全部博文(68)

文章存档

2018年(1)

2017年(2)

2016年(1)

2014年(2)

2012年(6)

2011年(14)

2010年(38)

2008年(4)

我的朋友

分类: LINUX

2011-02-11 08:57:56

在c的头文件中经常看到这样的形式。
  1. #ifdef c__plusplus
  2.     extern "c"{
  3. #endif
  4.    ...
  5. #ifdef c__plusplus
  6.     }
  7. #endif
这个.h文件被cpp文件include后,它告诉了cpp的编译器,被extern c 括起来的部分是c函数,在编译时,保持c风格的函数名。也就是说c编译出来的库,用extern c在头文件中括起,是为了方便cpp调用。
   这说明,宏c__plusplus 是c++编译器内定的。extern "c" 也由c++编译器处理。
   如果c++的库要给c调用,显然,不但要在c++头文件中用该宏和extern "c"括起,在cpp中也要这么做。原因就是让cpp编译器将那些代码,编译成c风格。
   根本原因:c++和c编译时同一函数原型产生的函数名不同。
阅读(6434) | 评论(0) | 转发(0) |
0

上一篇:缩写

下一篇:连读规则

给主人留下些什么吧!~~