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++的相互调用
编译方式决定符号表中的函数名的最终目标名
图片新闻
最新活动更多
-
11月28日立即报名>>> 2024工程师系列—工业电子技术在线会议
-
11月29日立即预约>> 【上海线下】设计,易如反掌—Creo 11发布巡展
-
11月30日立即试用>> 【有奖试用】爱德克IDEC-九大王牌安全产品
-
即日-12.5立即观看>> 松下新能源中国布局:锂一次电池新品介绍
-
12月19日立即报名>> 【线下会议】OFweek 2024(第九届)物联网产业大会
-
即日-12.26火热报名中>> OFweek2024中国智造CIO在线峰会
发表评论
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论