//将r中第base位至第base+len-1位赋值 value #define SET_BIT(r, base, len, value) / do{ / int i; / int mask = 0; / for(i=0; i<(len); ++i) / { / (r) &= ~(1<<((base)+i)); / mask <<= 1; / mask |= 1; / } / (r) |= ((value)&mask)<<(base); / }while(0) 犯了一个低级错误.忘记对宏参数加括号了, 代码没有问题. 希望能发现一个效率高一点的方法.