Flag 宣言

書いてみたけどいまいち。Level の区分が役不足になってからの方がよさそう。

#define SQUISH(n) (!!((n) & 0xF))
#define HEX2BIN(n) (SQUISH(n)                   \
                    | (SQUISH((n) >> 4) << 1)   \
                    | (SQUISH((n) >> 8) << 2)   \
                    | (SQUISH((n) >> 12) << 3)  \
                    | (SQUISH((n) >> 16) << 4)  \
                    | (SQUISH((n) >> 20) << 5)  \
                    | (SQUISH((n) >> 24) << 6)  \
                    | (SQUISH((n) >> 28) << 7))
#define FLAGS(f) HEX2BIN(0x##f##U)

ていうかこれ tcc で compile すると何食わせても 3 が出るんですが。