678资源网致力于优质软件,活动线报,游戏辅助,绿色工具等资源共享,好货不私藏!
678资源网
当前位置:首页 > 值得一看

值得一看

C语言和C++他们两者到底有着什么区别?

时间:2020-12-30 22:44:23   作者:678资源网   来源:   阅读:146   评论:0

自从引入了C++这个名字,并编写了C++的参考手册[Stroustrup,1984],与C语言的兼容性就成了最重要的问题,也成了争论的焦点。 此外,到1983年底,贝尔实验室负责开发和支持UNIX以及生产AT&T 3B系列计算机的分支机构开始对C++感兴趣,并希望在C++工具的开发上投入一些资源。

C语言和C++他们两者到底有着什么区别?

不幸的是,需要把C++的开发从独舞变成公司用来支持重点项目的语言。但是也意味着开发管理要考虑C++的因素。 开发管理部门下达的第一个命令是要求与C语言100%兼容,与C语言兼容的思路很明显,也很合理。但是编程的现实并没有这么简单。作为第一步,C++应该兼容哪个C?c方言无处不在。


虽然ANSI C已经开始出现,但是要得到稳定的版本还需要时间。ANSI C的定义也允许方言存在。我记得当时算过——只是开玩笑——有342种方言严格遵守ANSI C标准。得到这个数的基本方法是列出所有未定义或未定义的方面,作为公式的索引,然后用不同可能性的平均值。


自然,一个普通用户想要兼容C的意思就是C++兼容它本地的C方言。这是一个很重要的实际问题,我和我的朋友都特别关注。业内的管理者或厂商对这方面的关注要少得多。他们要么不知道技术细节,要么就是想用C++把用户绑在自己的软件和/或硬件上。贝尔实验室的C++开发人员是不同的。


他们独立于他们为之工作的组织,“把情感上的兼容义务作为一个概念[Johnson,1992]”,并试图抵制管理的压力,试图在C++的定义中隐藏一种特殊的C方言。


兼容性的另一个方面更为迫切:“为了达到自己的目标,C++应该在哪些方面与C不同?”以及“C++应该如何兼容C才能达到目的?”问题的这两个方面同等重要。在从带有类的C向c++ 1.0版本过渡的过程中,这两个方向都做了一些修改。慢慢地,痛苦地,一个共识逐渐浮现出来:C++和ANSI C之间不应该有不合理的不兼容(成为标准之后)[Stroustrup,1986],但只要不是不合理的,就应该有一些不兼容。


自然,“无缘无故的不相容”这个概念就成了争论的话题,耗费了我太多的时间和精力。这个原则后来被广泛理解为“C++:尽可能接近C,但不要太接近”,这是在我和安德鲁·克尼格以这个名字写了一篇文章之后。这个策略是成功的。一个标志是K&R2 [Kernighan,1988]中的所有例子都是用C++的C子集写的。


Cfront是用于在K&R2做样例代码基本测试的编译器。 关于模块化,如何将一些编译好的部分组合成一个程序,在原C++参考手册中已经有了清晰的体现[Stroustrup,1984]: [a]名字是私人的,除非明确宣布为公共的; [b]该名称是其所在文件的本地名称,除非是从该文件中显式导出的; [c]总是做静态类型检查,除非明确禁止; [d]类是一个作用域(也就是说类可以完美嵌套)。 意见[a]不会影响与c的兼容性,但[b]、[c]和[d]暗示不兼容: [1]默认情况下,c的非局部函数和变量可以在其他编译单元中访问; [2]使用前不需要声明C函数。


默认情况下,C函数调用不检查类型; [3]在C语言中,结构的名称不能嵌套(即使在词汇上嵌套)。 另外, [4] C++只有一个命名空间,而C语言中的“结构标记”有自己的命名空间(2.8.2节)。 这种“兼容性战争”现在看起来琐碎无聊,但还是留下了一些基本问题,至今没有解决,我们还在ANSI/ISO标准化委员会为之奋斗。


我很执着的认为,之所以会发生兼容性战争,并把它搞得出奇的广泛,是因为我们从来没有面对过C和C++不同目标的深刻内涵,而是一直把兼容性看成是一些需要单独解决的独立问题。 作为典型案例,大部分时间都花在了最不根本的问题[4]“命名空间”上,最终通过[ARM]的妥协解决。


我不得不在以类为范围的概念上做了一些妥协([3]),在发布1.0版的时候接受了C的“解决方案”。我从未意识到一个实际问题——在C语言中,一个结构不构成一个范围,所以下面的例子: 外部结构{ 内部结构{ int I; }; int j; }; struct内部a = { 1 }; 在加州是完全合法的。不仅如此,还有这个


免责声明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络收集整理,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!

相关文章

相关评论

本栏最新更新

本栏推荐

阅读排行