我试图编写一些简单的宏来简化设置和清除位的任务,这应该是一个简单的任务,但是我似乎无法使其正常工作。

#define SET_BIT(p,n) ((p) |= (1 << (n)))
#define CLR_BIT(p,n) ((p) &= (~(1) << (n)))

最佳答案

尝试

#define CLR_BIT(p,n) ((p) &= ~((1) << (n)))


但是由于种种原因,我会建议不要使用宏。使用内联函数并通过引用传递,如下所示:

static inline void set_bit(long *x, int bitNum) {
    *x |= (1L << bitNum);
}

关于c - 宏来设置和清除位,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7194814/

10-11 02:41