C语言支不支持重载?

  首先这个问题的答案是C++支持函数重载而C语言不支持函数重载。下面我们从程序编译链接阶段看看其中的原因。
  先看看重载的定义,函数重载就是指:
  在同一作用域类,一组函数的函数名相同,参数列表不同(个数不同或类型不同),返回值可同可不同。
  那么问题来了,为什么C++支持函数重载,而C语言不支持呢?
  从代码的编译到运行,在VC6.0或VS这种编译器下,它是系统直接完成了翻译与链接,直接生成了运行结果。
  编译器内部完成了翻译部分:
  1.预处理
   1)头文件展开
   2)宏的替换
   3)去注释
   4)条件编译
  2.编译过程:将高级语言转为汇编语言;
  3.汇编过程:汇编语言转为二进制程序;
  4.链接部分:所引用的数据链接进来。
 比如一个函数的声明如下:
  void function(int x,int y);
  在c语言中,编译器在编译后在库中的名字为_function
  在c++中,编译器在编译后在库中的名字为_function_int_int
 还有一个函数的声明如下:
  void function(float x,float y);
  在c语言中,编译器在编译后在库中的名字为_function。而在c++中,编译器在编译后在库中的名字为_function_float_float。在链接时,都是找名字进行链接的,就比如以上两个函数,在C语言中两个的名字一样,就会在链接中报错。C++中它们的名字不一样,所以就不会报错。


个人学习记录,由于能力和时间有限,如果有错误望读者纠正,谢谢!

转载请注明出处:CSDN 无鞋童鞋。

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值