Array|C++之重载函数学习( 三 )



2、c中如何调用c++函数:
这里我把main.cpp的内容改成:
Array|C++之重载函数学习
文章图片

文章图片

编译输出:
Array|C++之重载函数学习
文章图片

文章图片

add.c文件内容改成:
Array|C++之重载函数学习
文章图片

文章图片

输出结果:
Array|C++之重载函数学习
文章图片

文章图片

3、如何保证一段c代码只会以c的方式被编译?
解决方法如下:
__cplusplus是c++编译器内置的标准宏定义
__cplusplus的意义 , 确保c代码以统一的c方式被编译成目标文件
Array|C++之重载函数学习
文章图片

文章图片

这里把main.cpp改成:
Array|C++之重载函数学习
文章图片

文章图片

输出结果:
Array|C++之重载函数学习
文章图片

文章图片

4、注意事项
C++编译器不能以c的方式编译重载函数
编译方式决定函数名被编译后的目标名
c++编译方式将函数名和参数列表编译成目标名 , 这里举个例子main.cpp:
Array|C++之重载函数学习
文章图片

文章图片

编译输出:
Array|C++之重载函数学习
文章图片

文章图片

说明ii表示两个参数 , iii表示三个参数
c编译方式只将函数名作为目标名进行编译 , 这里还是以main.cpp为例:
Array|C++之重载函数学习
文章图片

文章图片

输出结果:
Array|C++之重载函数学习
文章图片

文章图片

目标名起冲突所以报错 。
5、小结:
函数重载是c++对c的一个重要升级
函数重载通过参数列表区分不同的同名函数
extern关键字能够实现c和c++的相互调用
编译方式决定符号表中的函数名的最终目标名


推荐阅读