先日C/C++のことを書いたせいか、ふと昔聞いたC言語プログラムのデバッグ小噺を思い出した。これは僕の体験談じゃなくてひとから聞いた話ね。もう記憶があやふやなので細かいところは間違っているかもしれない。 これはUNIX系OSで動いていたとある巨大なプログラムを、ウィンドウズに移植しようとして発生したバグの話。そのバグは、とある構造体群の周辺で発生した。そのシステムでは、多くの構造体が次のように定義されていた。 struct Data { char typechar[2]; short typenum; ... }; この typechar とか typenum というのは構造体の型を識別するためのコードだ。よーするに、あらゆるデータの先頭にそのデータ型を識別するためのコードが埋め込まれていたわけ。例えば AB-0001 みたいな、アルファベット2文字と16ビットの数字でデータタイプを識別し