我已经声明了这样的宏:
#define F_MASK_4_BIT 0xF
#define GET_F_4BIT_MASK(F, P) (((F) & (F_MASK_4_BIT << (P * 4))) >> (4 * P))
使用这样的宏:
uint8_t Feature = GET_F_4BIT_MASK(E, P);
其中E是uint64_t数据类型 P是uint8_t 数据类型
Prefast 发出警告:C6297:算术溢出:32 位值被移位,然后转换为 64 位值。结果可能不是预期值。
如何解决这个问题?