軽く追記
どうでもいいですが、久々に GCC の拡張文法
http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/gccextend.html
を見ていて、なんとなく
int main() { goto f; printf("%d\n", ({ int f; f:; f = 0; })); }
とか書いてたコードを適当にふくらませて
#include <stdio.h> void f(int f) { printf("%x\n", f); } int main() { goto *&&f; f(({ int f; f?f<+f+++f++>f:f;f:f,f = ({ int f() { return f<f-f>f; } f; f(); }); for (f;f;f); })); }
とかこんな感じで処理の流れわけわからんなーとか思ってるうちに今日のことをやってみたくなったとか。
あ、あと、1.ちゃんとスタック保存する、 2.ifdef を使わないという意味でのポータブルな、ライブラリが書ける気がしてきました (本日3度目の思いつきで2度は失敗) が大変そうなので明日…いずれにせよ制限ありまくりの実用性皆無のネタですが。