在C编程语言中,我已经使用的所有语言修订都将在任何非声明/赋值表达式之前执行前置变量声明。 C似乎已经放弃了所有版本的这个要求。我也认识到更现代的C版本也放弃了这个要求,但我还没有使用任何这些标准。
我的问题是这样的:什么历史原因是为了防止C语言自由地按需声明,而不是前面?
显然,从工程学的角度来看,有许多原因,但是对我来说,这些原因似乎都不合理。
>防止出现模糊的编译器行为错误(例如无限解析循环,用于评估的大量内存膨胀,或者使用宏的一些奇怪的角落情况)。
>防止不需要的编译器输出。这可能是任何从符号输出混乱的调试过程和易于开发调试工具,意外的堆栈存储订单。
>可读性。我发现这很难吞咽,看作为C,虽然设计的可读性相比,其他语言的时代,没有强制这种类型的结构几乎任何地方。 (除非你看到原型是一个类似的执行,但如果我记得原型在’89规格中添加)
>实现复杂性和实际原因。这是我最倾向于相信的。作为工程师,我们必须作出某些考虑,以便在分配的时间框架内运送可行的产品。虽然我会批准计算机科学和软件工程的专业景观都发生了巨大变化,但业务仍然是业务。在一天的结束,我确信贝尔想要一个成品,可以在Unix编程环境中使用,以展示他们已经取得了什么。
有没有人有任何好的来源备份上述任何?我完全错过了什么?我们可以从黎明直到黄昏,但我正在寻找好的硬引用。