不要再用 C/C++ 的这种说法了!-世界看热讯
我们对“C/C++”这种写法或说法似乎在无形之中早已习以为常,然而,这种做法真的是对的吗?
在今天这篇文章中,有开发者呼吁应该立即停止使用“C/C++”这种说法,因为这属于两种完全不同的编程语言,以下是他解释的原因。
原文:https://brycevandegrift.xyz/blog/stop-saying-c-and-c++/
(资料图)
编译 | ChatGPT
责编 | 苏宓
出品 | CSDN(ID:CSDNnews)
在我记忆中,每当有人提到用 C 或 C++ 编写的项目时,他们常常都会用 C/C++ 这样的说法。对于那些从未接触过 C 或 C++ 的大多数人来说,这可能看起来并不是什么大问题。
然而,问题在于当人们使用这个术语(C/C++)时,他们让 C 和 C++ 看起来像是相似或密切相关的编程语言。
事实并非如此。尽管 C++ 最初是基于 C 创建的,但随着时间的推移,这两种语言已经越来越不相似,并且在许多方面也存在差异。因此,建议停止使用"C/C++"这样的说法,而是明确指出是 C 还是 C++,以避免混淆和误导。
C 和 C++ 非常不同
可能会有人说:“嗯,你可以在 C++ 程序中编写 C 代码,所以从技术上讲,C是 C++ 的一个子集。”
但事实上,许多其他编程语言(如 Zig、Go、Nim 等)也可以编写 C 代码,并且几乎所有其他语言都有与 C 的互操作性。
因此,如果仅仅因为可以在 C++ 中使用 C 代码,就将 C 称为 C++ 的子集,那么同样的逻辑也可以应用到其他语言上,是否应该把 Zig、Go 和 Nim 称为 C/Zig、C/Go 和 C/Nim 呢?
显然这种做法不合适。
带有类的 C 语言
有人曾说,“C++ 只是带有类的 C 语言!”
其实说这句话的人显然从未使用过 C++。C++ 具有 与 C 语言不同的标准库、实现。在最初开发 C++ 时,它只是在 C 语言的基础上添加了类的特性,但自那时起,C++ 已经实现了与 C 语言不同的功能。
不兼容性
空指针
C++ 与 C 不兼容的一个例子是空指针的处理。例如,下面这段程序可以使用 C 编译器(如 GCC)进行编译,但无法使用 C++ 编译器(如G++)进行编译:#include
int main {int *a = malloc(5);return 0;}
这段代码只是给一个整数指针 a 分配了 5 个字节的内存。当使用 GCC 编译这个程序时,它可以正常运行,但如果使用 G++ 编译这个程序,就会返回以下错误:main.c: In function "int main":main.c:4:24: error: invalid conversion from "void*" to "int*" [-fpermissive]4 | int *a = malloc(5);| ~~~~~~^~~| || void*
发生这种情况的原因是 malloc 函数返回一个空指针(void pointer),而 C++ 不能将空指针直接转换为整数指针,除非它明确地转换为整数指针。
K&R 语法
C++ 与 C之间的另一个重要不兼容性是 C++ 实际上与 K&R 语法不兼容。以下以 K&R 语法书写的函数为例:int gcd(a, b)int a;int b;{if (b == 0)return a;return gcd(b, (a % b));}
使用 GCC 编译时,它会完美地编译通过(如预期的那样),然而使用 G++ 编译时,会出现另一组错误。gcd.c:3:9: error: "a" was not declared in this scope3 | int gcd(a, b)| ^gcd.c:3:12: error: "b" was not declared in this scope3 | int gcd(a, b)| ^gcd.c:3:13: error: expression list treated as compound expression in initializer [-fpermissive]3 | int gcd(a, b)| ^gcd.c:6:1: error: expected unqualified-id before "{" token6 | {| ^
这使得在 C++ 中使用 K&R 语法几乎不可能,除非你按照 ASCII C 的格式编写函数参数。(我知道很少有人关注 K&R 语法,但我认为这仍然是一个重要的区别)。
还有许多其他在 C 中无法转移到 C++ 的内容,例如复数、默认返回类型等等,但我认为你已经对此有所了解了。 如果让 C 与 C++ 一起使用时,这些不兼容性并不会破坏整个 C 语言,但这些小差异会逐渐累积。
对初学者来说很困难
不区分 C 和 C++ 还会产生排斥新用户的副作用。许多初学者程序员被“C/C++”这个术语引导,认为它们基本上是相同的语言。另外,也有许多教程被标榜为“C/C++教程”,进一步加深了混淆。
这也可能使 C 初学者退避三舍,让他们认为要理解 C 必须先理解 C++ 的复杂性(这实则完全没必要)。我以前也曾陷入这个陷阱,还有很多其他人。C 实际上是一种非常简单的编程语言,而 C++ 则不是。
C 和 C++ 程序员非常不同
随着年复一年引入的新的 C++ 标准,如 C++11、C++20 等,C++ 程序员获得了更多在标准 C 中不存在的工具和函数。这通常导致现代 C 程序比现代 C++ 程序具有更多的代码行数,然而这意味着现代 C 通常比现代 C++ 更易读。
以下是来自 LeetCode 的一个示例问题。解决方案可能不同,但大多数 C 语言的解决方案看起来像这样:int maximumCount(int *nums, int numsSize) {int pos = 0, neg = 0;for (int i = 0; i < numsSize; i++) {if (nums[i] >0) pos++;else if (nums[i] < 0) neg ++;}return pos >neg ? pos : neg;}
尽管这段代码对于 C 标准来说是相当紧凑的,但它仍然是非常可读的。现在说说 C++ 的解决方案,这个方案有很多变化,所以我将使用一个与 C 足够不同的方案。int maximumCount(std::vector
这使用了 C++ 标准库中的 vector 和算法。正如你所看到的,这段代码要紧凑得多,但绝对没有 C 语言代码的可读性。尽管 C 语言的解决方案可以被 C++ 编译器编译,但我想强调的是它们之间的差异有多大。这只是一个例子,说明 C 和 C++ 程序员在编程方面已经慢慢分离。
许多 C 程序员不愿意接触 C++
我很确定现在每个人都知道 C 程序员的刻板印象,唯一的问题是它是真实的。很多 Suckless 用户和开发者在他们的程序中只使用 C 和 POSIX shell。Cat-v 认可 C 和类 C 语言,但鄙视 C++。即使是 Linux 和 Git 的创造者 Linus Torvalds,也不愿意碰 C++。
如果雇主只想寻找 C 语言开发人员,那么他们更不应该把 C/C++ 放在工作描述中,如果这样做,他们只会吓跑有能力的 C 语言开发者。
解决方案
如果你指的是 C 语言程序或程序员,就说 "C"。如果你指的是一个 C++ 程序或程序员,就说 "C++"。如果你指的是两者分开使用,就说类似的东西:C 和 C++C,C++C++ 与 C等等
千万不要写 ——C/C++。
只有当你将 C 和 C++ 一起使用时,才可以说是C/C++。
▶10 年 Android 开发者突遭谷歌封号:“从此放弃,并决定开源所有应用!”
▶ 教授误用 ChatGPT 来论文“查重”,学生:不仅挂科了,我差点拿不了毕业证!
▶ ChatGPT App 来了! 返回搜狐,查看更多
责任编辑:
标签:
推荐
-
视焦点讯!消息称谷歌正在开发 Pixel Flip 翻盖折叠屏手机
在I O2023开发者大会上,谷歌推出了PixelFold“书本式”折叠屏手机,但消息称谷歌还将推出类似三星GalaxyZF
来源: -
环球速读:没有找到iertutil.dll 没有找到dllregisterserver输入点
1、开始菜单-运行-输入msconfig回车在里边的启动栏里把** dll前面的勾去掉就行了开始——运行——msco
来源: -
双减创实效 笔墨传经典——合肥市伦先小学成功举办第二届“和雅杯”硬笔书写大赛_全球动态
为进一步落实“双减”政策,丰富校园文化生活,提高学生的汉字书写水平,养成良好的书写习惯。5月18日下...
来源: -
Metagame Industries获得战略投资|全球速看料
MetagameIndustries是一家Web3游戏研发商,利用区块链、人工智能和云游戏来构建下一代元游戏。MetagameIndu
来源:
财富更多》
-
每日热议!冠中生态不超4亿可转债获深交所通过 国金证券建功
冠中生态不超4亿可转债获深交所通过国金...
-
5月22日人民币对美元中间价上调199个基点
5月22日人民币对美元中间价上调199个基...
-
“国际生物多样性日”特别策划 | 猜猜它是谁?
“国际生物多样性日”特别策划|猜猜它是...
-
天天微速讯:AI换脸,用“杨幂”“迪丽热巴”卖货涉嫌侵权吗
AI换脸,用“杨幂”“迪丽热巴”卖货涉...
-
环球消息!今日上市:长青科技、美芯晟
今日上市:长青科技、美芯晟---中国经济...
动态更多》
热点
- realme10系列正式宣布 采用双曲面屏正面顶部居中挖孔
- 五菱全新微型电动车内饰官图发布 座椅采用星际形打孔工艺
- 努比亚Z40星空典藏版正式开售 采用微米级油画笔触纹理技术
- iQOO11系列正式官宣 首批搭载骁龙8Gen2机型之一
- 海信34英寸带鱼屏显示器发布 支持165Hz刷新率
- OPPO明年将商用240W超级闪充 新一代电芯支持更高倍率充电
- 第一款Android手机渲染图曝光 横向滑盖设计和全尺寸键盘
- 吉利首款纯电皮卡11月9日上市 车辆续航里程超过610公里
- 努比亚Z40SPro星空典藏版正式公布 堪称窄边框天花板
- vivo无线运动耳机2今日正式上市 首销只要119元
- 环球消息!今日上市:长青科技、美芯晟
- 清华开源最懂表情包的中文开源大模型 最低只需要8.7G显存|天天新要闻
- 华硕子公司发布福尔摩斯大模型Formosa Foundation Model
- 环球速读:小米Civi 3将于5月25日发布首发天玑8200 Ultra
- 全球视点!渝三峡A:5月19日融资买入205.7万元,融资融券余额1.9亿元
- 我爱我家:5月19日融资买入522.58万元,融资融券余额1.92亿元
- 全球今日报丨上能电气募资25.5亿元 投向10GWh储能系统集成等
- 32岁网红用锯片狠插妻子双眼,懊悔割腕自缢身亡
- 广西各级社会科学普及基地:“花式”科普 有趣有料
- 蹲点笔记|“服务青年,我们可不是说说而已” 作者:王超 更新时间:2023-05-22 07:54 来源:吉林日报—大吉网_世界热消息
- 2023江苏常州新运城市发展有限公司招聘拟录用人员名单公示(2023年第八批)
- 好评差评 群众来评 湖北交警推出执法管理服务评价系统 环球百事通
- 世界银行报告指出——全球大宗商品价格呈下行趋势 世界看热讯
- 【高质量发展调研行】产业园区集聚新动能
- “气候科技”初创企业增多
- Instagram宕机,大量用户遭遇访问问题
- 苹果iOS16.5更新后续航缩水|全球球精选
- 全国首个DNA存储领域预训练大模型“ChatDNA”发布
- 最新消息:扩大有效投资 培育创新动能——江苏制造业加速回暖
- 国产中文大语言模型“天河天元”发布
- 环球即时:一张锂电池隔膜背后的“技术破壁”
- 全国首个DNA存储领域预训练大模型“ChatDNA”发布
- 速看:何雄会见中德(中国)环保有限公司客人 持续深化务实合作 为发展厚植绿色底色
- 当521遇见小满,开新唱起来南阳站满载而归!|当前热议
- 男子酒醉殴打孕妇致其耳聋 被刑拘事件简单介绍|天天关注
- 2-0!苏迪曼杯最新战报:国羽决赛连赢两盘,石宇奇横扫韩国主力
- 黄渤倪妮新戏在港拍摄发生意外,七印象文化工作人员:伤者意识清楚,现在诊断治疗 世界今亮点
- 辽宁省人社厅发布《办事不找关系指南》-焦点短讯
- 智能客服应带来更好体验(新视角)
- 最新消息:辽宁排查和帮扶“两类群体” 巩固脱贫攻坚成果
- 焦点信息:人民币汇率双向波动,对金融市场影响总体有限
- 如果房价“硬扛不降”,或会出现四个明显的麻烦,每个都很棘手 世界视点
- 吉木乃县加大冷链食品进口力度 实现贸易额达到255万元
- 即时:瑞再企商潘韶辉:为中国 市场提供创新性保险方案
- 13代酷睿i9+32GB内存 专业大屏高性能轻薄本华为MateBook 16s 2023发布
- 五粮液富贵吉祥酒上品52度怎么样_五粮液富贵吉祥酒上品 当前快播
- 世界讯息:都匀市气象台将暴雨黄色预警信号升级为暴雨橙色预警信号【Ⅲ/较重】【2023-05-22】
- 【环球聚看点】世界时间钟表_非洲时间现在几点
- 内刊策划方案_内刊|天天热推荐
- 多特反超拜仁,自06/07赛季德甲首次在最后两轮榜首易主
- 阿里P9下岗再就业 环球快播报
- 拟穴青蟹和锯缘青蟹(拟穴青蟹的简介)
- 【聚看点】天蝎座女生的长相貌美会怎样呢(天蝎座女生的长相)
- 每日热闻!津媒:贝里奇鼻中隔和鼻骨两侧骨折,无缘24日与梅州客家的比赛
- 世界热讯:中关村国际前沿大赛吸引海内外2500余个项目参与
- 【世界时快讯】微软Bing Chat不再“吝啬”,字数限制放宽至4000
- 沃森生物:公司RQ3013Ⅲ期临床试验数据尚未全部揭盲
- 中企神马电力拟赴美设立公司以实施数字化工厂建设项目
- 焦点讯息:崩坏星穹铁道亦师亦友承任务是什么
- 天天动态:苹果,是时候制作透明的 iPhone 了!
- 每日聚焦:魅族20白色面板命名创意
- 中国(威海)医药与医疗器械创新发展大会开幕
- 天天看点:美光公司在华销售的产品未通过网络安全审查
- 环球报道:何赛飞回应“痛斥梅花奖”:有自媒体为博取眼球断章取义
- 横店影视:前4月院线端票房收入6.36亿元 同比增30.49%_当前滚动
- 石英股份:4月份净利润同比增长约580%-670%
- 三峰环境:前4月上网电量20.24亿度 同比增12.51%
- 当前消息!古老运河与年轻电商“深度对话” 江苏宿迁第五届运河电商大会启幕
- 老姜炒鸡怎么做才好吃
- 关于大S梦幻海洋婚礼耗三千万 小S女儿当花童的相关信息
- 做猪肉丸10斤肉放多少食用碱
- 再见米兰!中场核心投皇马,巴西国脚免费来投
- 清华大学与北京经开区开展主题教育调研联学活动 环球新资讯
- 央视美食文化栏目《味道》走进浙江嘉兴,重温记忆中的江南味道
- 【全球独家】共2.3亿!!吉安2宗住宅用地成交!其中市区...
- 每日快看:药明巨诺-B(02126)与Juno订立载体供应协议
- “小马路派对”让市民感受到“条条马路都好吃”
- Intel公布全新架构x86S!纯64位模式运行:指令集大幅精简 全球独家
- 鲜绿的春韭菜,Q弹的小河虾,一个字“香”!-天天快资讯
- 陕西2023年养老保险缴费基数多少?什么时候开始申报?_环球实时
- 每一次搜索都是一份关心,QQ 浏览器打通搜索到公益的“最后一公里”
- 2023个人养老保险缴费一年交多少钱?个人养老保险要交多久?|今日播报
- 内地与澳门合作研制首颗科学卫星“澳门科学一号”成功发射
- 万人说新疆|异国他乡相识相念的新疆夫妻_当前视点
- 广药荔小吉全“荔”做大广东荔枝产业_环球观天下
- 河北省科技周937项活动
- 世界聚焦:知名男演员被曝性骚扰男同事,竟带全家一起自杀!
- 美团全新外卖平台KeeTa明日香港开送,计划年底覆盖全港
- 天天微速讯:中国铁建:开启大江大河“治水+文旅”新模式
- 2022年报及2023一季报点评:2022年业绩短期承压,2023Q1复苏拐点已现
- 荨麻草的食用方法_荨麻草怎么食用
- 每日精选:中国工程院院士、苏大医学院院长詹启敏:当前是健康事业发展最佳历史机遇期
- 极狐全额补偿老车主 是诚意还是噱头?|每日观察
- 王坤:用AI让姥爷参加妈妈的婚礼,弥补我们每一个人心里的遗憾
- qq音乐如何煲机(如何煲机) 世界聚看点
- 美国校园枪击案频发 五年多来已发生超千起
- 热讯:has是什么意思(HQ是什么意思)
- 当前速看:真理之剑10-11(真理之剑1 93)
- Meta据悉与Magic Leap就AR交易进行谈判 2小时前 世界信息
- 湖人球迷一半退场,一半留下狂嘘詹姆斯!38岁勒布朗彻底晚节不保
- 全球讯息:税务师证书的优势及职业发展前景
- 环球看热讯:杭州校游研学文化旅游发展有限公司_关于杭州校游研学文化旅游发展有限公司概略
- 双馆联合 共度“魔法”科技周_焦点关注
- 聚焦:斗罗大陆客漫栈 客漫桟
- 今年扎克伯格财富暴涨440亿美元,涨幅居亿万富豪首位-环球播资讯
- 天天观热点:京津冀大数据合作协同发展 共享数据资源 推动跨省通办
- 舅舅的巨大
- 凌度行车记录仪系统升级 凌度行车记录仪官网升级
- 在消费的漫长冬季,红杉想打个能引起共鸣的响指 当前聚焦
- 卖货屡遭白嫖党店家起诉顾客
- 裹面炸鱼的做法面粉炸小鱼怎么做?
- 我市开展危险化学品重大危险源企业交叉互检 快看点
- 最新资讯:武汉工业学院数理系(关于武汉工业学院数理系介绍)
- 【报资讯】厦航通报飞行学员在女厕偷拍被抓:开除!
- 北斗“上新”为万亿元级市场指路|全球独家
- 全球实时:625米!挑战世界新高度|花江峡谷大桥正在贵州高原拔地而起
- 瓦士本市_关于瓦士本市介绍
- 天天热点评!腾势D9 DM-i,零百加速9.5s,售价33.58万
- 聚焦:祝客户中秋节祝福语大全_送客户经典中秋节祝福语简介介绍
- 动态:远程诊疗涵盖全科室
- 【世界聚看点】百山千园绕贵阳
- 诗画远安绽放美丽经济
- 世界实时:科幻产业正脱颖而出——北京市区企联动打造重点项目群
- 经济日报携手京东发布数据——精细育儿催生母婴市场升级
- 环球速读:暗黑地牢2全BOSS机制分析与打法分享
- 环球观速讯丨美国联邦调查局被曝滥用私人通信数据库
- 合肥甘露寺(甘露寺 安徽省肥东县甘露寺)_世界新视野
- 全球观察:味道歌曲辛晓琪-寻找辛晓琪 味道 歌词
- 具身智能:人工智能应用新方向——主题周报5月第2期
- 英智库预测食品支出将成为推动英国通胀主要力量
- 当前快报:毛不易上海演唱会2023(时间地点)
- 最新2023教师资格证报名时间(全年)
- 今热点:科目三上车打火流程是什么 _p0016故障码什么意思
- 茅山术是否真实存在_茅山术_天天热点评
- 日本虎杖和中国虎杖的区别_日本虎杖 环球快播