Цитата(ivainc1789 @ Sep 7 2007, 18:44)

#define SETBITS(x,y) (x |= (y)) // Set bits y in byte x
По моему, такой макрос вреден - из его названия совершенно непонятно, как им пользоваться - что писать в y, как именно надо указать нужные биты - через запятую, сложить ...
Лично я пользуюсь макросами вида:
Код
#define BIT(n) (1<<(n))
#define BIT2(b1, b2) (BIT(b1)|BIT(b2))
#define BIT3(b1, b2, b3) (BIT2(b1,b2)|BIT(b3))
#define BIT4(b1, b2, b3, b4) (BIT3(b1,b2,b3)|BIT(b4))
#define BIT5(b1, b2, b3, b4, b5) (BIT4(b1,b2,b3,b4)|BIT(b5))
#define BIT6(b1, b2, b3, b4, b5, b6) (BIT5(b1,b2,b3,b4,b5)|BIT(b6))
#define BIT7(b1, b2, b3, b4, b5, b6, b7) (BIT6(b1,b2,b3,b4,b5,b6)|BIT(b7))
#define SETBIT(p,n) (p)|=BIT(n)
Если вам нужен SETBITS, то насоздавайте кучу макросов SETBIT2 .. 7
Неудобство - надо указывать правильное число. Если укажите неправильное - получите ошибку компиляции. В принципе, не сильно напрягает...