这个问题可能源于我对编译器的误解,但是现在开始..。
我们可以在 K & R 第一版的序言中找到以下陈述(第11页) :
操作系统 C 编译器和基本上所有的 UNIX 应用程序(包括用于编写本书的所有软件)都是用 C 编写的。
(我的强调)
我不明白的是: 在编译任何 C 代码之前,C 编译器不是必须自己编译吗?如果那个 C 编译器是用 C 编写的,那么编译它难道不需要一个已经存在的 C 编译器吗!
走出这个无限回归难题(或者鸡和蛋的问题)的唯一方法是,K & R 所指的用 C 编写的 C 编译器实际上是用一个已经存在的用 C 以外的语言编写的 C 编译器编译的。然后用 C 编写的 C 编译器取代了后者。
还是我完全错了?