Borland Turbo C 2.01 使用什么 C 版本?

What C version does Borland Turbo C 2.01 use?

我已经开始使用 Turbo C 2.01 作为一个业余项目。是的,DOS 版本。自从它于 1987 年问世以来,我认为它不支持 C90……但它支持。好吧,它的碎片。 volatile 关键字有效。不支持直接 K&R;我尝试了 K&R 样式声明,但出错了。

所以,我想知道 C Turbo C 使用什么形式。我敢肯定它是非标准的,但它看起来有些一致,而且由于这是当时非常流行的编译器,我敢肯定有一些信息收集...对吗?

那时候没有真正的标准,而且MS-DOS有自己的怪癖(即分段内存模型,不同的应用程序内存模型使用不同......)。

所以我认为可以肯定地说,Turbo C 2.01 使用 C 的 Turbo C 2.01 方言。

关于支持 C90,请注意该标准显然已尽最大努力使现有 C 代码与其兼容。因此,毫不奇怪,87 的 Turbo C 可以用最少的更改构建大多数 C90 程序。

根据wikipedia,最初的K&R非标准规范是在78年出来的。ANSI X3J11委员会制定ANSI C89标准的起点是1983年,目标是

to establish a standard specification of C. X3J11 based the C standard on the Unix implementation.

该标准随后被 ISO 采用为 C90。但是由于它广泛地基于现有的实现,因此该实现的扩展已经移植到其他实现中,例如 Borland 的实现。

因此,87 年的 Borland C2.01 已经包含了仅 2 年后才被标准采用的 K&R C 的大部分扩展,这并不令人感到意外。