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++的相互调用
编译方式决定符号表中的函数名的最终目标名
图片新闻
技术文库
最新活动更多
-
即日-12.26立即报名>>> 【在线会议】村田用于AR/VR设计开发解决方案
-
1月8日火热报名中>> Allegro助力汽车电气化和底盘解决方案优化在线研讨会
-
1月9日立即预约>>> 【直播】ADI电能计量方案:新一代直流表、EV充电器和S级电能表
-
即日-1.14火热报名中>> OFweek2025中国智造CIO在线峰会
-
即日-1.16立即报名>>> 【在线会议】ImSym 开启全流程成像仿真时代
-
即日-1.20限时下载>>> 爱德克(IDEC)设备及工业现场安全解决方案
推荐专题
发表评论
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论