C++杂忆集(六)

来源:互联网 发布:卖家怎么开淘宝客 编辑:程序博客网 时间:2024/06/05 22:46
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语言方式编译和连接。
原创粉丝点击