乒乓:一款需要 C 编译器才能玩的游戏
这篇文章介绍了一个名为“乒乓”的独特游戏,它需要玩家使用 C 编译器来运行和游玩。该作品入选了 2025 年国际混乱 C 代码大赛(IOCCC),将编程与经典乒乓球玩法巧妙结合,展现了代码的艺术性与趣味性。
背景速读
- **IOCCC(国际C语言代码混淆大赛)** 是一项年度编程竞赛,参赛者要用C语言写出功能正确但极尽晦涩、扭曲、难以理解的代码,最早可追溯到1984年。
- 2025年获奖作品之一「Ping pong」是一个在终端运行的乒乓球游戏,但它的特殊之处在于:你需要在C编译器(如gcc)的编译过程中完成游戏——代码会利用编译器的错误信息、警告、预处理行为等机制实时模拟出球拍和球的运动,玩家通过修改源码或编译参数来「击球」。
- 该项目展示了C语言预处理、编译错误处理、宏展开等底层机制的创造性(或者说疯狂)用法,是IOCCC「以怪异方式使用C语言」传统的延续。
- 要理解它,需要了解:C语言的编译过程(预处理→编译→汇编→链接)、编译器报错机制、以及如何通过宏定义在编译期制造特定行为。