【发布时间】:2010-05-10 11:39:38
【问题描述】:
我了解编译器/解释器语言扩展的原因,但为什么没有有效定义的行为允许静默失败/做奇怪的事情而不是引发编译器错误?是因为编译器捕获它们的额外困难(不可能或只是耗时)?
附:哪些语言有未定义的行为,哪些没有?
P.P.S.是否存在并非不可能/在编译中需要很长时间才能捕获的未定义行为的实例,如果是,是否有任何充分的理由/借口。
【问题讨论】:
-
一个相关的问题会涉及“实现定义的行为”,它没有“未定义的行为”那么糟糕,但仍然不理想。
-
在某些语言中,函数参数的求值顺序,包括 + - * / 运算符,是未定义的。您真的希望用这种语言编写的程序无法编译吗?
-
@mouviciel:大概他希望语言在重要的地方定义评估顺序。
标签: language-agnostic compiler-construction compiler-errors unspecified