【发布时间】:2017-03-02 04:23:16
【问题描述】:
我在所有未定义行为列表中引用了 ANSI_ISO+9899-1990 -
- 使用了在当前范围内不可见的标识符
为什么使用未定义的变量 UB 而不是错误?我想知道这背后的原因?将所有不“正确”的东西都设置为 UB 是否有效?
我知道大多数编译器都将其视为错误。但是为什么标准会这样说呢?
或者标准中没有“错误”的概念? c的语法是.*但是有一部分有UB?
【问题讨论】:
-
阅读技术标准时,必须将规范性文本与信息性文本分开。必须遵循的规范性文本,而信息性文本仅用于澄清。引用的文本来自信息性附录。它不是规范性文本,也不是编译器必须遵循的。
标签: c language-lawyer undefined-behavior c89