C 程序里的一切都是未定义行为

查看原文 HN 讨论

文章摘要

作者 Thomas Habets 写 C/C++ 30 年,但这篇博文的核心论点是悲观的——”没人能写出正确的 C 或 C++。“未定义行为(UB)不是边角案例,而是渗透在语言规范本身。任何非平凡的 C/C++ 程序几乎一定隐含 UB——只是你没发现而已。

他用一连串看似无害的代码片段证明这一点:

作者的态度更极端——这种语言在 2026 年根本不适合再写。他甚至建议公司让 LLM 系统性扫描 UB,并把企业里继续写 C/C++ 类比为可能违反 Sarbanes-Oxley 法案(公司治理合规)。结论的金句很硬——”没人能写正确的 C 或 C++。”——连 OpenBSD 这种成熟项目也藏着未被检测的 UB;安全漏洞往往从最无害的操作里冒出来;初级程序员现实里不可能掌握所有 subtleties。

文章不直接推销替代语言,但暗示了——如果你真的想写正确的代码,去找一个 UB 模型更可控的语言。

HN 评论精华