今天遇到如下代码:
(1)#define PB_REG_SLCM_CB_INFO_VALID 0x1 << 2
(2)nSimInitInfo &= ~PB_REG_SLCM_CB_INFO_VALID;
跑到(2)处时,nSimInitInfo = 0x03, 本意是把nSimInitInfo的bit3清零的,可是(2)执行后,nSimInitInfo = 0x00。 看了好一会,没看出是WHY??
原因:宏是直接替换的。因此:0x1 << 2应该改为:(0x1 << 2)。
微信扫一扫
今天遇到如下代码:
(1)#define PB_REG_SLCM_CB_INFO_VALID 0x1 << 2
(2)nSimInitInfo &= ~PB_REG_SLCM_CB_INFO_VALID;
跑到(2)处时,nSimInitInfo = 0x03, 本意是把nSimInitInfo的bit3清零的,可是(2)执行后,nSimInitInfo = 0x00。 看了好一会,没看出是WHY??
原因:宏是直接替换的。因此:0x1 << 2应该改为:(0x1 << 2)。
相关推荐