C语言支不支持重载?

2023-11-02

  首先这个问题的答案是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 无鞋童鞋。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言支不支持重载? 的相关文章

  • Ubuntu 20.04 安装 WPS 2019 及其卸载

    Ubuntu 20 04 安装 WPS 2019 1 打开WPS官网 https linux wps cn 下载安装包 2 下载deb格式 下载好的文件如下图 3 打开终端 依次输入命令 我下载的文件在 下载 文件夹当中 默认的也是这个文件
  • 解决Backtrader中self.broker.get_value()值为nan与问题解析

    解决方法 删除数据源中close为空的行 或者更极端一点 删除存在空值的行 主要查看数据源是否存在缺失值 如果使用Backtrader的默认逻辑 计算value会对应收盘价 收盘价不能有缺失值 如果使用开盘价购买 则开盘价不能有缺失值 问题
  • 【JavaScript数据结构与算法】数组类(电话号码的字符组合)

    个人简介 个人主页 前端杂货铺 学习方向 主攻前端方向 也会涉及到服务端 Node js 个人状态 在校大学生一枚 已拿多个前端 offer 秋招 未来打算 为中国的工业软件事业效力 n 年 推荐学习 前端面试宝典 Vue2 Vue3 Vu

随机推荐

  • PTA 08-图9 关键活动 题目关键点说明及解法完全分析

    PTA mooc完整题目解析及AC代码库 PTA 拼题A 浙江大学中国大学mooc数据结构全AC代码与题目解析 C语言 假定一个工程项目由一组子任务构成 子任务之间有的可以并行执行 有的必须在完成了其它一些子任务后才能执行 任务调度 包括一
  • MyBatis—利用MyBatis查询(查询所有,查询一行,条件查询)

    文章目录 1 查询所有 2 查询详情 通过特定属性查询 3 多条件查询 1 接口参数列表三种表达方式 2 多条件查询 3 动态Sql 4 多条件动态查询 5 单条件动态查询 1 查询所有 基本步骤 1 定义mapper接口 编写接口方法 2
  • keil5烧录或下载程序出现停止工作的问题

    本人在使用keil5烧录或下载程序出现停止工作的问题 开始认为是keil版本的原因 后来使用了keil4发现问题依然存在 发现因为本人使用了盗版JLINK被驱动检测出来了 由于安装的驱动版本为V6 14 新版的驱动检测到盗版JLINK 一旦
  • 1014 Waiting in Line (30)

    题目描述 Suppose a bank has N windows open for service There is a yellow line in front of the windows which devides the wait
  • 成为FISCO BCOS MVP,并肩链上创未来

    开源以来 FISCO BCOS受到众多开发者的支持 支撑生态内企业数百个应用项目的研发 其中 超120个应用投入使用 目前开源社区已汇聚了超40000名开发者 既有在区块链路上探索实践的开发者 也有自成一派 颇有建树的技术大牛 大家聚集于此
  • ESP32-C3 学习测试 蓝牙 篇(七、GATT 数据通信 — 发送自定义数据)

    前面我们已经入门了 GATT 的开发 更进一步 进行想要的数据通信 目录 前言 1 通信问题思考 2 如何才能每次传输不同的数据 3 对 handle 的认识 4 继续尝试 5 测试成功 结语 前言 本来计划直接做一个蓝牙的小应用 首先得实
  • 【Unity故障】Unityhub登录界面白屏(刷新不出那种感觉)

    平时打开UnityHub可能也就是偶尔需重新激活一下许可证 今天进去发现每个工程后都一个黄色感叹号标志 看了下账号也没登状态 当我以为登个账号就解决 然后就一直卡在这个界面 好像在哪看见过这个问题直接百度搜 资料很多 前人已经帮我们铺平了道
  • java.lang.IllegalArgumentException: jdbcUrl is required with driverClassName.

    springboot 配置多数据源时 启动出现java lang IllegalArgumentException jdbcUrl is required with driverClassName 修改 spring datasource
  • HIVE解析JSON数组

    HIVE解析JSON数组 数据示例 payAmount 375000 payChannelCode BOC payAmount 376000 payChannelCode AOC 1 get json object函数提取json数组里面特
  • 快速排序算法讲解及代码(详细)

    快速排序算法 一 序言 二 快速排序基本思想 三 具体步骤 四 具体代码 一 序言 快速排序是一种高效且使用广泛的排序算法 在很多语言的标准库中自带的排序都是快速排序 所以我们也有必要了解快排的原理以及实现方法 二 快速排序基本思想 算法思
  • C51单片机学习1

    工程的建立与烧录 一 工程的建立 1 在想要建立工程的地点新建一个文件夹 2 打开C51 选择新建项目 3 点击保存 4 选择芯片AT89C52 选好点击OK 5 破解版的一个bug 点击否就好了 6 然后工程就建立好了 二 工程的配置 1
  • FPGA引脚简介

    一 FPGA的硬件结构 这里说的硬件结构主要从FPGA的引脚功能方面描述 FPGA内部的电路逻辑暂不讨论 FPGA的引脚大致可以分为三类 功能引脚 IO引脚 电源和接地引脚 1 功能引脚 FPGA的功能引脚包含了FPGA配置程序加载 FPG
  • 如何自定义FileZilla编辑文件的默认打开方式

    需求来源于 用FileZilla编辑远程的文件时 每次打开居然不会提示我 打开方式 而是直接跳到了网页 以网页的形式展现 这样我怎么好进行编辑其中的内容 特别是对于xml文件 我们通常需要对它进行配置 可是 如果打开方式是网页 比如 直接跳
  • vue项目引入element-ui的三种方式

    1 element ui插件引用 推荐 通过执行命令vue add element来进行引入 2 npm install 此种方式为全量引入element ui 打包体积大 通过执行命令npm i element ui S安装依赖 main
  • linux超级用户添加,为linux普通用户添加超级用户权限sudo

    问题 假设用户名为 ali 如果用户名没有超级用户权限 当输入 sudo 命令 时 系统提示 ali is not in the sudoers file This incident will be reported 解决 1 进入超级用户
  • unity editer2020版本安装

    unity editer2020版本安装 前言 unity安装 激活许可证 前言 官方下载unity最新版本 unity安装 1 点击下载 2 点击 下载Unity Hub 3 由于我是windows10系统 所以点击 Windows 下载
  • vue表格展示照片点击放大并可左右切换查看

    一 vue展示后台返回照片集合 前端代码展示
  • 基于机器学习的恶意软件加密流量检测研究分享

    1 概述 2 恶意软件加密流量介绍 3 加密HTTPS流量解析 4 特征工程 5 模型效果 6 具体实施 7 总结 1 概述 近年来随着HTTPS的全面普及 为了确保通信安全和隐私 越来越多的网络流量开始采用HTTPS加密 截止今日 超过6
  • 深度学习模型推理时间与FPS的求取方法,以及time,OpenCV的API教程

    类似深度学习中目标检测的深度学习模型中有两个非常重要的性能指标 一个是MAP就是检测的准确率 另一个就是FPS 就是模型的推理速度 那么我们如何能够知道模型和视频的推理速度呢 接下来我们直接进入正题 一 求取模型的推理时间我们需要借助pyt
  • C语言支不支持重载?

    首先这个问题的答案是C 支持函数重载而C语言不支持函数重载 下面我们从程序编译链接阶段看看其中的原因 先看看重载的定义 函数重载就是指 在同一作用域类 一组函数的函数名相同 参数列表不同 个数不同或类型不同 返回值可同可不同 那么问题来了