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

    +129

    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
    // 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, 05 Мая 2013

    Комментарии (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-битного контроллера?
      Ответить

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