C言語でfor i inをしたい
メモです、小ネタです、てゆかネタです。
危険ですのであんまり真似しないでください。何が危険って、可読性がやばいです、読めないです。
#include <stdio.h> #define PUT(var) printf("%s = %d\n", #var, var) #define RANGE(var, start, end) \ int(##var) = start; var != end; var += (start < end ? 1 : -1) int main() { for(RANGE(a, 0, 10)) PUT(a); for(RANGE(b, 0, -10)) PUT(b); int end = 10; for(RANGE(c, 0, end)) { PUT(c); if(c > 5) end = 0; } return 0; }
上二つは普通にカウントアップとカウントダウン。
最後のは0, 1, 2, 3, 4, 5, 4, 3, 2, 1, 0ってなるちょっとアクロバティックな動作。
いやー、キモい。 C言語なのか何なのかよく分からない。 マクロ良くないね。いや、適度な使用は良いんだろうけれど。うかつに使うと可読性が酷いことに。
なお、上記ソースはtccのversion 0.9.25で動作確認しました。gccでやったらめっちゃ怒られました。