В практике ембеддера достаточно часто приходится использовать переменую для считывания значения регистра. Причём сама считанная величина в дальнейшем не требуется, важен лишь сам факт считывания регистра в процессе которого происходит сброс служебных бит.
Всё бы ничего, но при этом возникают надоедливые сообщения о том, что переменная проинициализирована, но нигде не используется. Как в приведённом ниже примере случилось с переменной status.
Вопрос - можно ли с помощью хитрого объявления переменной исключить генерацию данных предупреждений? И да, речь идёт о языке ANSI С
void I2C1_EV_IRQHandler()//приём данных в режиме SLAVE
{
uint16_t status;
if (I2C_GetITStatus(I2C1, I2C_IT_ADDR) == SET)
{//проверяем адрес устройства
status = I2C1->SR1;
status = I2C1->SR2;
SlaveBufPos = 0;
}
Ещё одно важное дополнение.
Очень хотелось бы также чтобы в результате изменения уровня оптимизации компилятор не "оптимизировал строчки"
status = I2C1->SR1;
status = I2C1->SR2;