ローグと C の規格

初めてデータ分離版ローグ・クローンIIのソースを見た時は驚きました。
K&R で書かれているのです。
それもそのはず、ソースに付属している README.1st のドキュメントを見ると最後に

1989.9.26

と書かれています。
README.1st はデータ分離版の前身の「ローグ・クローン 2 日本語版 1.3』の README のようです。
また、日本語版の元になっている、オリジナルのローグ・クローン 2(ああ、ややこしい)*1は、さらに作成日は古いはずです。
C89/C90 は1989〜1990あたりに規格が発行されているので、規格ができるかできないかの時に作成されているローグとその日本語版は、 K&R で書かれていて当り前ですね。*2


なお、 rogueclone2s では、コンパイルが通るように修正した後に、 K&R を C89 に書き直しました。
C99 にしなかった理由は、 gcc のデフォルトが C99 ではなかったからです。
C99 特有の機能を使って書いたコードは "-std=c99" を指定しないとエラーになってしまいます。


K&R から C89 に変更する時に小手先技をいろいろ知ったので、その方法は次回に書きたいと思います。

*1:*また、やってしまいました。

*2:ちなみに、ローグライクゲームのいい加減な系譜 によると Rogue Clone が 1987 年、 Rogue Clone 2 が 1989 年作成となっています。