C语言真相:ISO标准与事实标准的鸿沟
Into the depths of C: Elaborating the de facto standards (2016)
C语言虽由ISO标准定义,但实际系统中代码假设与编译器实现早已分道扬镳,且无人能完全厘清。剑桥大学团队深入剖析了指针与内存语义的设计空间,通过构建测试用例和调查专家观点,揭示了事实标准与ISO标准间的共识与冲突。他们提出了Cerberus形式化模型,旨在为C语言的主流用法建立清晰、一致的语义基础,帮助程序员和工具明确假设,推动C语言走向更安全的未来。
C语言在名义上由ISO标准定义,但现实中系统代码所依赖的C语言特性与编译器实现之间,不仅偏离了ISO标准,彼此之间也产生了分歧,且这些差异从未被清晰理解。