Skip to Main Content
C++程序设计语言(第4部分:标准库)(原书第4版)
book

C++程序设计语言(第4部分:标准库)(原书第4版)

by 本贾尼 斯特劳斯特鲁普
August 2021
Intermediate to advanced content levelIntermediate to advanced
450 pages
6h 57m
Chinese
Pearson
Content preview from C++程序设计语言(第4部分:标准库)(原书第4版)

44.3 C/C++兼容性

除少数例外,C++可视为C(这里是指C11,由ISO/IEC 9899:2011(E)定义)的一个超集。两者的大多数差异都源于C++对类型检查的极度强调。编写良好的C程序也很容易成为合格的C++程序。编译器能诊断C++和C的每处不同。C99和C++11不兼容之处都列在iso.C中。在本书(英文原版)写作过程中,C11还非常新,大多数C代码都是遵循经典C或C99的。

44.3.1 C和C++是兄弟

经典C有两个主要后代:ISO C和ISO C++。多年以来,两种语言在以不同的步调沿着不同的方向发展。造成的一个结果就是它们都支持传统C风格编程,但支持的方式有着细微不同。所产生的不兼容会使某些人非常苦恼——同时使用C和C++的人、使用一种语言编写程序但用到另一种语言编写的库的人以及为C和C++编写库与工具的人。

为何会说C和C++是兄弟呢?毕竟C++很明显是C的后代。但是,请看下面简化后的家谱:

在此图中,实线表示大量特性的继承,短杠虚线表示主要特性的借用,而点虚线表示次要特性的借用。从中可以看出,ISO C和ISO C++是K&R C的两个主要后代,因此它们是兄弟。两者在发展过程中都从经典C继承了关键特性,但又都不是100%兼容经典C。“经典C”一词是我从Dennis Ritchie的显示器上贴的便条中挑出来的。它大致相当于K&R C加上枚举和struct赋值两个特性。

不兼容对程序员来说是噩梦,部分原因是它会造成选择上的组合爆炸。考虑下面简单的维恩图解: ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

Java并发编程实战

Java并发编程实战

Brian Goetz, Tim Peierls
C++语言导学(原书第2版)

C++语言导学(原书第2版)

本贾尼 斯特劳斯特鲁普
Go程序设计语言

Go程序设计语言

艾伦A. A.多诺万, 布莱恩W. 柯尼汉
可编程网络自动化

可编程网络自动化

Jason Edelman, Scott S. Lowe, Matt Oswalt

Publisher Resources

ISBN: 9787111544395