Most useful Obfuscated C program

もっとも便利な難読化Cプログラム

受賞者:Gopi Reddy

引用元:https://www.ioccc.org/1988/reddy.c

審査員・作者による説明:https://github.com/ioccc-src/winner/blob/main/1988/reddy.hint

動作

C言語の変数名の定義を与えると、それを英語で説明してくれる。

$ gcc -m32 -o reddy reddy.c

$ ./reddy
input: int x;
`x' is int.

input: int x[10];
`x' is array[0..9] of int.

input: int *x;
`x' is ptr to int.

input: int x();
`x' is func returning int.

input: char *(*(fun[16])();
`fun' is array[0..15] of func returning ptr to ptr to char.

解説

再帰呼び出しを使って非常に巧妙にパースと出力をしている。

getsをプロトタイプ宣言なしで使っており、返り値が暗黙的にintとなるが、それをポインタとして使うので、-m32をつけないと動かない。