您的位置:首页 > 编程语言 > C语言/C++

C++杂忆集(六)

2017-08-24 10:50 120 查看
C++与C混合编程中的extern "C"

在我们使用C++为主体,混合使用C语言进行编程的时候,对于初学者而言最常遇见的一个问题是在编译的过程中,无法连接到目标函数。这是为什么呢?这我们就需要知道另一件事情,C++支持函数重载。
C++的函数重载究竟是如何实现的呢?其实在C++源码中的函数名称并非是编译后的名称,实际上这种处理是编译器做的,隐蔽而又常被人们忽略。C++编译器会给我们所写的函数添加前后缀,而且是和函数参数列表密切相关的。C语言不支持重载,编译后的目标函数名就是源码中所给的函数名。
这时候,我们就需要明确的告知编译器,将要连接的是C函数,这时候就需要用到extern关键字了。例如在某个C++的头文件中我们声明一个函数,并且是C函数:
#ifndef ___ABC_H__
#define ___ABC_H__

extern "C"	// 明确告知编译器,无需转换格式,该函数为C语言格式的函数
{
int Func_C(int i);
}
#endif

这样便可以通过编译了,其实并不仅仅用于修饰C语言的函数,也可以用于变量,目的就是告知编译器,以下的代码块需要按照C语言方式编译和连接。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ extern C