• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Как я тупил над оператором switch

Andy Korg

Moderator
Команда форума
Хочу поделится веселым случаем который произошел только что. Написал час назад такой кусок кода:
Код:
switch (VarList[i].varType){
                    vtenByte:
                        tcp_puts(VarList[i].ArgPrnHttp, *((uint8*)(VarList[i].Value)));
                        break;
                    ....
                    vtenWord32:
                        tcp_puts(VarList[i].ArgPrnHttp, *((uint32*)(VarList[i].Value)));
                        break;
                    default:
                        os_printf("bad = %x\n", *((uint8*)(VarList[i].Value)) );
                        break;
}
И запустил отладку. Код конечно же не заработал. В debug порт все время лезло 'bad - '. Думаю что за фигня! Переписал на операторах "if" все прекрасно работает. Вернул взад на switch - не работает! Вообщем пошел попить чаю и вспомнил - "а оператор case! совсем про него забыл!" И компилятор не ругается, ведь все же написано синтаксически правильно. Вот такой получился у меня тупняк сегодня. Зато счас смешно от собственной тупости :)
 

Perfer

New member
Тогда все понятно! :)
Кстати, конструкцию вида z:blablabla(x,y); компилятор воспринимает как вызов функции blablabla(x,y) на которую указывает метка z. Поддержка меток в компиляторе от goto осталась.
 
Последнее редактирование:
Сверху Снизу