HeadlinesBriefing HeadlinesBriefing.com

减少C语言中的未定义行为

Hacker News •
×

我们在营销方面表现不佳——我们承认这一点。我们的优势在于撰写开发者、系统管理员和自由软件支持者赖以了解 Linux 世界动态的文章。请今天订阅,帮助我们继续这样做,这样我们就不必擅长营销。

作为生物医学工程教授,Martin Uecker 或许不符合 Kernel Recipes 典型演讲者的形象。不过,他是一名长期使用 Linux 的用户,并致力于开发用于控制磁共振成像(MRI)扫描仪的自由软件。他出席此次会议是为了谈论 C 编程语言、C 中未定义行为这一具体问题,以及 C 最终能否成为一种内存安全的语言。

2026 年为何还要关注 C?他说,它仍然是一门优秀的语言。C 具有可移植性、长期稳定、编译速度快,生成的二进制代码运行迅速。“所见即所得”;查看 C 代码就能大致了解计算机实际会做什么。围绕该语言的工具很多,而且在必要时 C 会退居幕后。

C 拥有悠久的历史,这影响了我们今天所见的语言,他说。C89 标准必须应对各种各样的硬件,包括采用符号-绝对值或反码整数表示、分段内存、奇特指针表示以及类型大小令人惊讶的机器。例如,一些 Honeywell 机器拥有九位字节。这极大地增加了编写能够支持可移植代码的标准这一任务的难度。所采取的方法是,用抽象机来定义语言的语义。所有操作都应如同在该抽象机上运行一样执行,而该抽象机可能并不完全匹配实际硬件。程序的可观察行为必须与抽象机所执行的行为一致。

来源: Hacker News · 由HeadlinesBriefing整理摘要