Best Abuse of the C Preprocessor

Cプリプロセッサの最高の悪用

受賞者:David Goodenough

引用元:https://www.ioccc.org/1990/dg.c

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

動作

ROT13エンコーダ。

$ gcc -o dg dg.c

$ echo Hello | ./dg
Uryyb

解説

トークンを1つだけ追加するマクロを大量に定義し、それらを組み合わせるだけでプログラムを構成している。 単純だがおもしろい。

#define aqu(x) x'
#define bqu(x) 'x

aqu(bpu(A))

によって'A'を作り出す、というのは動かないので、これは'A'に置き換えた(このことはdg.hintにも書かれている)。 また、#define d defineのトリックも動かないので書き下した。

パッチ

パッチをダウンロード