#define setbit(a,i) (a.flag##i = 1)
#define clrbit(a,i) (a.flag##i = 0)
#define testbit(a,i) (a.flag##i == 1)
ただし、iは定数。

...要求条件を満たさないようだな。


変数でアクセスしたいなら、素直に
#define setbit(a,i) ((a)|=1<<(i))
#define clrbit(a,i) ((a)&=~(1<<(i)))
#define testbit(a,i) ((a)&(1<<(i)))
とか。