设为首页 加入收藏

TOP

C++的秘密之详解extern
2014-10-23 23:30:03 来源: 作者: 【 】 浏览:53
Tags:秘密 详解 extern

  时常在cpp的代码之中看到这样的代码:


  #ifdef __cplusplus


  extern "C" {


  #endif


  //一段代码


  #ifdef __cplusplus


  }


  #endif


  这样的代码到底是什么意思呢?首先,__cplusplus是cpp中的自定义宏,那么定义了这个宏的话表示这是一段cpp的代码,也就是说,上面的代码的含义是:如果这是一段cpp的代码,那么加入extern "C"{和}处理其中的代码。


  要明白为何使用extern "C",还得从cpp中对函数的重载处理开始说起。在c++中,为了支持重载机制,在编译生成的汇编码中,要对函数的名字进行一些处理,加入比如函数的返回类型等等.而在C中,只是简单的函数名字而已,不会加入其他的信息.也就是说:C++和C对产生的函数名字的处理是不一样的.


  比如下面的一段简单的函数,我们看看加入和不加入extern "C"产生的汇编代码都有哪些变化:


  int f(void)


  {


  return 1;


  }


  在加入extern "C"的时候产生的汇编代码是:


  .file "test.cxx"


  .text


  .align 2


  .globl _f


  .def _f; .scl 2; .type 32; .endef


  _f:


  pushl p


  movl %esp, p


  movl $1, êx


  popl p


  ret


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++文件的输入/输出之一 下一篇C++获得系统时间具体实现代码解析

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: