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

    +135

    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
    #define atfl_calc_opcode_(op) \
    ((op) == (ATFL_OP_PAGE_STORE|ATFL_BUF1|ATFL_PAGE_ERASE) ? 0x83 : (\
    	(op) == (ATFL_OP_PAGE_STORE|ATFL_BUF2|ATFL_PAGE_ERASE) ? 0x86 : (\
    	(op) == (ATFL_OP_PAGE_STORE|ATFL_BUF1|ATFL_PAGE_NO_ERASE) ? 0x88 : (\
    	(op) == (ATFL_OP_PAGE_STORE|ATFL_BUF2|ATFL_PAGE_NO_ERASE) ? 0x89 : (\
    	(op) == (ATFL_OP_PAGE_LOAD|ATFL_BUF1) ? 0x53 : (\
    	(op) == (ATFL_OP_PAGE_LOAD|ATFL_BUF2) ? 0x55 : (\
    	(op) == (ATFL_OP_BUF_READ|ATFL_BUF1) ? 0xD4 : (\
    	(op) == (ATFL_OP_BUF_READ|ATFL_BUF2) ? 0xD6 : (\
    	(op) == (ATFL_OP_BUF_WRITE|ATFL_BUF1) ? 0x84 : (\
    	(op) == (ATFL_OP_BUF_WRITE|ATFL_BUF2) ? 0x87 : (\
    	(op) == (ATFL_OP_PAGE_ERASE) ? 0x81 : (\
    	(op) == (ATFL_OP_PAGE_ERASE|ATFL_PAGE_ERASE) ? 0x81 : (\
    	0)))))))))))))

    Угадайте зачем.

    Запостил: dmzlj.livejournal.com, 07 Мая 2010

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

    • макросы не нужны
      Ответить
    • Это AVR. Нормальный код. Если у вас ООП заднего мозга, то схуяли?
      Ответить
    • Ну ты сам написал, что из свича переделал, потому что компилятор не хотел выоптимизировать вызов функции. Тернарный else if тоже не помог, компилятор такой хреновый значит, кто там под моторолу компилит кроме гцц?
      Ответить
    • Судя по скобочкам в последней строке, автору кода самому стало смешно.
      Ответить
    • > Угадайте зачем.

      Думаю, от нехер делать.
      Или это писалось для какого-то хитрого аппарата, на котором делать вызов функции почему-то западло.
      Ответить
      • Что бы заставить компилятор свернуть константное выражение до его значения. В случае с аналогичной функцией (со свичом внутри) он это делать не захотел.
        Ответить
        • Фух, я уж думал, и игрой в угадайку Вы решили повторить "славу" Урсуса.
          Ответить

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