【发布时间】:2015-03-27 03:17:19
【问题描述】:
我回顾了一些 C 的历史,我发现在 C 的早期版本中,就像在 C89 标准中一样,在块的开头声明变量是强制性的。
但我也发现 C99 标准规范有一些放宽,其中变量可以在使用之前在任何地方声明。
我的问题是为什么早期版本强制要求它?我的重点是了解当时在设计编译器时是否存在任何技术困难,从而阻止他们在任何时候识别声明。
另外,从编译器设计的角度来看,我理解,由于 C89 中存在这样的限制,在中间文件的帮助下处理变量声明和使用来存储映射是很容易的。但是有没有方法可以在不使用中间文件(比如一些基于内存的存储)的情况下处理这种情况?
【问题讨论】:
-
不需要中间文件来存储映射,而且从来没有。
-
@AmrithKrishna 你基本上是在问编译器如何使用数组......?
-
关闭投票者,请在投票前三思而后行,将其作为“主要基于意见”来关闭。 OP 要求对 C89 标准的一部分进行技术论证。
-
@FpggyDay:你错了,这太棒了(将数据和代码的范围最小化到它实际有用的地方——并且可以分配有意义的值——是可维护编程的基本原则),并且通过将问题的技术方面转移到意见陈述中,您正在增加这个问题应该作为基于意见来结束的印象。
-
别忘了,早在 1970 年代初,当 C 语言刚被设计出来时,机器不一定有 64 KiB 的内存(它们有 less !)在其中工作。为了让编译器执行,简化是必要的。
标签: c++ c compiler-construction