Я объявил макросы как это:
#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-разрядному значению,Результаты могут не соответствовать ожидаемому значению.
Как это исправить?