C和C++的相互调用

在c++中,为了支持重载机制,在编译生成的汇编码中,要对函数的名字进行一些处理, 加入比如函数的返回类型等等. 而在C中, 只是简单的函数名字而已, 不会加入其他的信息.例如,
在这里插入图片描述
即C++和C在编译后对产生的函数名字的处理是不一样的. 所以就利用extern "C"实现C与C++的相互调用问题.

C++调用C:将“{}”中以C的规则生成C++的语法

extern "c"
{
     extern int Sum(int ,int);
}

C调用C++:
不能修改C++中的源文件,当改变C++中的源程序后,在cpp中对该函数的调用将会出现问题,所以需要添加一个中间层.cpp,将中间层的源文件改为以C的规则生成。
在这里插入图片描述
注意:不知道这个源文件是被c还是cpp调用时,加上#ifdef、#endif防止被调用时产生重复调用头文件的冲突

#ifdef --cplusplus
extern"c"
{
#endif
	void text()
	{
		cout<<"void text"<<endl;
	}
#ifdef --cplusplus
}
#endif

猜你喜欢

转载自blog.csdn.net/weixin_43364781/article/details/84402951