1. Си / Говнокод #2738

    +138.1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    unsigned char SIM300_Reboot(void)
    {
        // проверим статус модема
        if (!pinSTATUS)             // если STATUS = 0 (модем выключен)
        {
            while (1)               //если не включается-включаем до посинения
            {
                if (!(Modem_ON()))
                    return 0;
            }
    
        } else                      // если STATUS = 1 (модем включен)
        {
            while (1)               //если не выключается - выключаем до посинения
            {
                if ((!Modem_OFF()) && (!Modem_ON()))
                    return 0;
            }
    
        }
    }

    тяжёлые будни программиста embedded-систем.
    дополнительный аромат: упомянутые функции возвращают 0 в случае успешного выполнения, а не наоборот, как можно было бы подумать при виде if (!some_func(...))

    Запостил: angry C nerd, 09 Марта 2010

    Комментарии (10) RSS

    • if ((!Modem_OFF()) && (!Modem_ON()))
      return 0;

      Ommmmmmm....
      Ответить
      • if ((!Modem_OFF()) && (!Modem_ON()))
        return 0;
        вот это красивое решение
        Ответить
    • Где таких шлюх нашли?
      Ответить
    • Херня, все правильно написано.
      Ответить
      • а вот и автор.
        Вообще жесть, что тут написано :D
        Ответить
        • Нет, я не автор этого годного кода.
          Ответить
    • Вообще-то, так и делается (про "до посинения") ,если прерывания не пользовать.
      Ответить
      • Не пользовать прерывания - говнокод.
        Ответить
    • Вообще по логике оно выключается-включается до посинения, не?
      То есть приведенный код в итоге никогда не выключит модем, он будет всегда включен.
      Ответить

    Добавить комментарий