栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

怎样在c++中调用c语言的函数

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

怎样在c++中调用c语言的函数

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录
  • 前言
  • 一、为什么会出现这种情况
  • 2.怎样解决这种情况
  • 总结


前言

很多小伙伴可能会在编程中遇到这样的问题,那就是在c++文件中调用c语言的函数会发生报错,那么为什么会出现这种情况,又该如何解决呢?


提示:以下是本篇文章正文内容,下面案例可供参考

一、为什么会出现这种情况

以下在Linux下测试:
c函数: void MyFunc(){} ,被编译成函数: MyFunc
c++函数: void MyFunc(){},被编译成函数: _Z6Myfuncv

通过测试我们可以看到,c++支持函数重载,c++会根据自身习惯对函数名进行修饰,经过编译后c和c++产生的函数名是不同的,导致c++链接不到c语言中的函数。

2.怎样解决这种情况

extern "C"的主要作用就是为了实现c++代码能够调用其他c语言代码。加上extern "C"后,这部分代码编译器按c语言的方式进行编译和链接,而不是按c++的方式。

我们只要在c的.h文件下进行如下操作,再在c++文件中调用c的头文件,就可以链接成功。

c文件的.h文件代码如下

#ifdef __cplusplus //两个_下划线
extern "C" {
#endif // !__cplusplus

	void show();

	
#ifdef __cplusplus //两个_下划线
}
#endif // !__cplusplus

c++文件代码如下

#include "test.h"

int main(){

	show(); //在C++中 函数是可以发生重载的,编译器会把这个函数名称偷偷改变  _showv  void

	system("pause");
	return EXIT_SUCCESS;
}

总结

例如:以上就是今天要讲的内容,本文仅仅简单介绍了如何在c++文件中调用c文件的函数,希望可以给大家带来帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/832966.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号