Няшная / Говнокод #12967 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
// After #include <this file>   you can  
// use b_1010_1100 isted of 0b10101100 
 
#define b_0000_0000 0 
#define b_0000_0001 1 
#define b_0000_0010 2 
#define b_0000_0011 3 
#define b_0000_0100 4 
#define b_0000_0101 5 
#define b_0000_0110 6 
#define b_0000_0111 7 

.......................

#define b_1111_1010 250 
#define b_1111_1011 251 
#define b_1111_1100 252 
#define b_1111_1101 253 
#define b_1111_1110 254 
#define b_1111_1111 255

http://radiokot.ru/forum/download/file.php?id=150175

И там такого добра валом и всё в одном файле и для вашего "удобства"

Запостил: m08pvv m08pvv, (Updated )

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

  • Определения всех битов для микроконтроллеров:
    ATmega8 ATmega16 ATmega32 ATmega64 ATmega128

    хахаха. как смешно.
    теперь вы можете использовать более читаемый формат 
    b_1010_1100   вместо   0b10101100

    не ну он и на самом деле более читаемый. я не знаю где появилось впервые, но использование подчеркиваний в этой роли я увидел первый раз в Перле, куда они были повзаимствованы Ларри Воллом из Ады.

    ЗЫ bbcode, bbcode. a quote так до сих пор и не работает в комментах.
    Ответить
    • 0b10101100 кресты не поддерживают по стандарту префикс 0b. Это фантастика. Эти дифайны единственный вариант задать бинарное число красиво и по стандарту.

      В С++11 разрешили использовать _ как разделитель в числах, так что ада теперь сосет.
      Ответить
      • "В С++11 разрешили использовать _ как разделитель в числах, так что ада теперь сосет."

        ссылка? в grammar summary не вижу. и не гуглится.
        Ответить
      • Начнем с того, что это вообще не плюсы. Это CodeVision AVR.
        И да, отступать от стандартов нехорошо. Но он таки поддерживает бинари.
        Да, хороший тон - задавать битовые константы в хексах.
        Это лучше читается, чем мешанина ноликов-единичек, поверьте. 🙂
        К слову, на плюсах под мелкие МК вообще не пишут. Для них - ANSI C / MISRA C.
        Итак, смысл шутки в том, что человек сделал масштабный костыль для того, что является плохой практикой. Всем peace.
        Ответить
    • Смысл в том, что так писать вообще не надо. Кто видел исходники начинающих, тот знает, что они любят фигачить значения SFR в бинари (почему? Не знаю). Тогда как вместо этого надо использовать дефаны битов.
      Т.е., писать не
      DDRD=0b00100010;

      (совсем плохо)
      а
      DDRD=PIN1 | PIN5;

      (лучше, используются стандартные дефайны)

      а еще лучше (передефайнив) что-то типа -
      DDRD=LED_PIN | SWITCH_PIN;

      (правильнее всего)

      Таким образом, делать такой масштабный костыль для того, что является плохим стилем - дикая дикость. И да, это смешно.
      Ответить
      • DDRD=PIN1 | PIN5;
        DDRD=LED_PIN | SWITCH_PIN;

        Таким образом, делать такой масштабный костыль для того, что является плохим стилем - дикая дикость.

        и откуда по вашему мнению берутся вот те магические константы PIN1, PIN5, LED_PIN и SWITCH_PIN???

        как правило из вот такого "дикого" хидера.
        Ответить
        • и откуда по вашему мнению берутся вот те магические константы PIN1, PIN5, LED_PIN и SWITCH_PIN???
          как правило из вот такого "дикого" хидера.
          LED_PIN и SWITCH_PIN пишутся для удобства
          PIN1 и PIN5 - из стандартных файлов
          Ответить
      • Эм, а разве на AVR PIN5 это не просто 5? Если мне не изменяет память я писал что-то типа 1 << PIN5, когда формировал масочки для портов...
        Ответить
  • Хе-хе, а почему 0b01010101 для совместимости не оставили?
    Ответить
  • А не поделитесь ссылочкой для 32-битного контроллера?
    Ответить

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

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8