Цитата(ARV @ Feb 22 2012, 11:05)

в операторе switch допускается указывать до первого вхождения метки case любые операторы, то есть вот так МОЖНО (компилятор не ругается):
Код
switch(var){
somevar = 12;
case 0:
// some code here
}
однако avr-gcc полностью игнорирует эти "предварительные ласки", даже если somevar объявлена как volatile
Вот как раз (кажется, во второй раз на этом форуме, но не нашёл предыдущего... а, может, это на другом форуме было)
http://electronix.ru/forum/index.php?s=&am...t&p=1030014Предупреждение на строку somevar = 12; может быть максимум Unreachable code, т.е. такое же, как на
Код
int a;
void foo()
{
goto lab1;
{
a = 0; // unreachable code и никакой volatile не поможет, тут может быть только определение static-объекта
lab1:
a = 3;
return;
a = 4; // unreachable code
}
}
Цитата(ARV @ Feb 22 2012, 12:06)

было -Wall... с вашим советом Warning появился, но какой-то странный: я сделал 2 строки с подобным кодом, но предупреждение выпало только на первую их них...
Есть предупреждения, которые выдаются только на одну строку. Тут — на первую строку фрагмента.
Ещё бывает «переменная может использоваться без инициализации».
Иногда он сам говорит, что предупреждение или ошибка выдаётся только на первое вхождение того, о чём ругань.