7.30-8.1 全数会2025(第六届)机器人及智能工厂展
火热报名中>>
C++之重载函数学习
三、C++和C相互调用:
实际工程中C++和c代码相互调用是不可避免的
c++编译器能够兼容c语言的编译方式
c++编译器会优先使用c++编译的方式
extern关键字能够强制让C++编译器进行c方式的编译:
1、下面进行一个c++中调用c函数,这里我在当前创建三个文件: add.c 、add.h 、main.cpp。内容分别如下:
add.c内容:
add.h内容:
然后我用gcc编译编译生成add.o文件:
然后main.cpp里面调用add.c
输出结果:
结果显示找不到这个函数,为了能够在c++里面调用c语言里面的函数,我们就要使用刚才上面讲的第四点了;这里我们先用nm命令来查看一下add.o文件里面是否生成符号表(有生成):
解决方法,main.cpp改成:
输出结果:
2、c中如何调用c++函数:
这里我把main.cpp的内容改成:
编译输出:
add.c文件内容改成:
输出结果:
3、如何保证一段c代码只会以c的方式被编译?
解决方法如下:
__cplusplus是c++编译器内置的标准宏定义
__cplusplus的意义,确保c代码以统一的c方式被编译成目标文件
这里把main.cpp改成:
输出结果:
4、注意事项
C++编译器不能以c的方式编译重载函数
编译方式决定函数名被编译后的目标名
c++编译方式将函数名和参数列表编译成目标名,这里举个例子main.cpp:
编译输出:
说明ii表示两个参数,iii表示三个参数
c编译方式只将函数名作为目标名进行编译,这里还是以main.cpp为例:
输出结果:
目标名起冲突所以报错。
5、小结:
函数重载是c++对c的一个重要升级
函数重载通过参数列表区分不同的同名函数
extern关键字能够实现c和c++的相互调用
编译方式决定符号表中的函数名的最终目标名

图片新闻
技术文库
最新活动更多
-
3月27日立即报名>> 【工程师系列】汽车电子技术在线大会
-
4月1日立即下载>> 【村田汽车】汽车E/E架构革新中,新智能座舱挑战的解决方案
-
即日-4.22立即报名>> 【在线会议】汽车腐蚀及防护的多物理场仿真
-
4月23日立即报名>> 【在线会议】研华嵌入式核心优势,以Edge AI驱动机器视觉升级
-
4月25日立即报名>> 【线下论坛】新唐科技2025新品发布会
-
4月30日立即参与 >> 【白皮书】研华机器视觉项目召集令
推荐专题
-
10 第四代半导体,破晓时刻
发表评论
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论