原文
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
原始链接: https://news.ycombinator.com/item?id=43352503
一篇 Hacker News 的讨论跟随着一篇关于 C 和 C++ 中未定义行为 (UB) 的文章。一些用户指出像 Rust 和 Go 这样的较新语言具有较少的 UB。一位用户建议为 C/C++ 添加一个“超级严格”模式来强制显式定义行为。其他人指出 Go 可能会通过数据竞争产生 UB,而 Rust 在“unsafe”模式下也有 UB。 讨论涉及 C++ 委员会不愿添加内存安全注解的情况,一位用户引用 `span::operator_at` 作为证据。一位用户认为 UB 是编译器为了适应多种实现而故意设置的“逃生门”,而不是意外。这与认为实现定义行为足以达到该目的的观点形成对比。带符号整数溢出被提及作为一个在较新的 C 标准中仍然存在的 UB 的例子。最后,一位经验丰富的 C 程序员批评链接的文章过时且写得不好。
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
reply