Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

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

Тема в разделе "Флейм", создана пользователем Andy Korg, 20 фев 2015.

  1. Andy Korg

    Andy Korg Moderator Команда форума

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

    Perfer Новичок

    Сообщения:
    27
    Симпатии:
    3
    Ок! А что означает в Си/Си++ конструкция вида:
    Код (Text):
    1. z:
    2.     blablabla(x,y);
    3.     break;
    Или здесь как-то вмешивается #define?
     
  3. Andy Korg

    Andy Korg Moderator Команда форума

    Сообщения:
    413
    Симпатии:
    74
    забыл добавить что вся эта конструкция в цикле. Поэтому break; компилятор относил к циклу.
     
  4. Perfer

    Perfer Новичок

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

Поделиться этой страницей