C和C++接口的相互调用
我们为什么要学习C和C++接口的相互调用?
答:在工作中,我们经常要使用C和C++混合编程,那么,在调用对方接口时,总是不可避免地出现问题。为了让双方和谐地工作,我们就得用到extern "C"。
extern "C" 的定义:
- extern "C" 是C++的特性,是一种链接约定,它并不影响调用函数的定义,即使做了该声明,对函数类型的检查和参数转换仍要遵循C++的标准,而不是C。
- extern "C" 主要是为了解决C++在调用C函数库时,用C++直接链接就会出现不能识别符号的问题,而用上extern "C"后,告诉C++编译器要以C语言的方式编译和链接函数,即直接使用函数名而不是一个经过处理的函数名。
extern "C" 的使用:其包含的代码以C的规则来处理
extern "C" 的使用情况:
C++调用C的接口:
cpp文件中加extern "C"
C调用C++的接口:
可以修改C++的文件
.cpp文件中加extern "C"(和C++调用C的接口处理方法一样)
不能修改C++的文件
通过加中间层处理
源文件不确定什么编译器编译
则通过C++编译器中的必有的一个宏来判断