1. C++ / Говнокод #17612

    +53

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    static uint8_t const FREE = static_cast<uint8_t>(0);
    static uint8_t const USED = static_cast<uint8_t>(1);
    
    static char_t const * const THINKING = &"thinking"[0];
    static char_t const * const HUNGRY   = &"hungry  "[0];
    static char_t const * const EATING   = &"eating  "[0];

    Из демы QP/C++ библиотеки. Вот в таком духе очень много кода.

    Индустриальщики, после перехода на С++, похоже очень сильно страдают по отсутствию pre-ANSI C какашек, и изобретают новые.

    Запостил: Dummy00001, 10 Февраля 2015

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

    • вот еще типичный (не шучу) пример:
      //! helper macro for checking the global QS filter
      #define QS_GLB_FILTER_(rec_) \
          ((static_cast<uint_fast8_t>(QP::QS::priv_.glbFilter[ \
                  static_cast<uint8_t>(rec_) >> 3]) \
            & static_cast<uint_fast8_t>(static_cast<uint8_t>(1U << \
                     (static_cast<uint8_t>(rec_) & static_cast<uint8_t>(7))))) \
                   != static_cast<uint_fast8_t>(0))
      Ответить
    • Dining Philosophers?
      Ответить
      • да. жуткая дема возможностей библиотеки, где ни начала ни конца найти не возможно.

        но это не самое худшее что я там нашел. я перед от отходом домой, нашел в либе реализацию деления байта на 8 табличным способом...
        Ответить
        • > деления байта на 8 табличным способом
          static_cast<uint8_t>(rec_) >> 3 им уже не доставлял?
          Ответить
          • А если комп троичный?
            Ответить
            • То на нём сишка не пашет по стандарту, увы.
              Ответить
              • почему нет? просто компилеру нужно будет генерить код симулирующий правильное поведение.
                Ответить

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