我试图编写一些简单的宏来简化设置和清除位的任务,这应该是一个简单的任务,但是我似乎无法使其正常工作。
#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/