C 规范定义了各种类型的程序行为,包括未定义、未指定、实现定义、错误,而且格式不正确。虽然一些区别相对清晰,但“格式不正确;无需诊断”一词引起了对其确切含义的质疑。
格式不正确: A违反语法或可诊断语义规则的程序。
未定义的行为:标准对实现操作没有做出任何假设或要求的程序行为。
错误: 标准使用的术语,表示程序格式不正确或参与未定义的行为.
格式良好: 遵循语法和可诊断语义的程序
当实现以引入新语法或行为的方式扩展语言时,就会出现这种特定的措辞。根据标准,此类扩展被认为是格式错误的,但允许实现不发出诊断消息。
这里的关键区别是未定义的行为明确承认程序的错误性质,而“格式错误;无需诊断”是指实现允许违规但未提供明确错误的特定情况
从技术上讲,格式不正确的程序不应该编译。然而,在“格式错误;无需诊断”的情况下,技术上允许实现静默编译甚至执行程序而不发出警告。
标准的不一致使用围绕错误的术语导致了混乱。术语“错误”意味着需要诊断的错误,但 1.3.13 中的“注释”部分允许实现默默地忽略此类问题。
虽然可能存在细微差别在“格式不正确;不需要诊断”和“未定义的行为”之间,标准的不一致使得很难明确区分。最终,这两个术语都指的是程序行为不可预测并可能导致意外结果的情况。
以上是C 的'未定义行为”和'格式错误;无需诊断”之间有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!