background image

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

#ifdef __cplusplus 
extern "C" { 
#endif

//一段代码

#ifdef __cplusplus 

#endif           记住这个格式
  

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

  要明白为何使用 extern "C",还得从 cpp 中对函数的重载处理开始说起。

在 c++中,为了支持重载机制,在编译生成的汇编码中,要对函数的名字进行一些处理,
加入比如函数的返回类型等等

.

而在 C 中,只是简单的函数名字而已,不会加入其他的信

.

也就是说:C++和 C 对产生的函数名字的处理是不一样的. 目的就是主要实现 C 与 C++

的相互调用问题。

一个应用的例子:c.c
C.h:
#ifndef _c_h_
#define _c_h_
#ifdef 

__cplusplus

extern "C" {
#endif
void 

C_fun()

;

#ifdef 

__cplusplus

}
#endif
#endif
-----------------------------------
c.c 的实现
#include "c.h"
void 

C_fun()