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でやったらめっちゃ怒られました。