现在的位置: 首页 > 综合 > 正文

关于extern “C”的学习

2014年05月24日 ⁄ 综合 ⁄ 共 535字 ⁄ 字号 评论关闭

1. extern "C"怎么用?
#ifndef _MODULE_A_H_
#define _MODULE_A_H_

#ifdef __cplusplus
extern "C" {
#endif

declear your APIs

#ifdef __cplusplus
}
#endif

#endif

2. extern "C"的作用?
extern "C"的主要作用是为了正确实现C++程序调用其它C程序的代码,
告知编译器以下应该以C语言的方式来编译和连接。

3. 历史由来?
C语言是先发展起来的语言,而C++是后发展起来的语言,
所以在C++之前就有了很多C语言写出来的库。
而C++语言要如何使用这些已有的库呢?所以就会了extern "C"。

4. 原因?
因为系统的需要以及历史的原因,有些模块是C语言编写的,有些模块是C++语言编写的。
C++支持函数重载,而C语言不支持。
所以函数重载就是,
例如函数的原型为:void func(int x, int y);
这个函数使用C编译器,编译出来的名字类似于_func;
而使用C++编译器,编译出来的名字类似于_func_int_int;

5. 何时使用?
当有C++程序需要调用由C程序开发的C库时,就需要使用extern "C"了,
其目的是为了告诉编译器以下这段代码应该以C语言的方式进行编译。

抱歉!评论已关闭.