#define SET(flag, bit, value) (value ? flag |= bit : flag &= ~bit)
#define GET(flag, bit) ((flag & bit) == bit)
test code:
long flag = 0;
SET(flag, 0x01, TRUE);
bool res = GET(flag, 0x01);
SET(flag, 0x10, TRUE);
res = GET(flag, 0x11);
SET(flag, 0x01, FALSE);
res = GET(flag, 0x01);
res = GET(flag, 0x11);
fix variable type situation:
#define r(a,b) typedef a type_##b
#define p(b) type_##b