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

    +137

    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
    int memcmp (const void* v1, const void* v2, size_t n)
    {
       uint32_t *s1;
       uint32_t *s2;
       size_t  i;
    
       s1 = (uint32_t*) v1;
       s2 = (uint32_t*) v2;
    
       for (i = 0; i < n; i++) {
                    if (*s1 != *s2) {
                            return *(const uint32_t *)s1 >
                                   *(const uint32_t *)s2 ? 1 : -1;
                    }
                    s1++;
                    s2++;
            }
       return 0;
    }

    Реализация memcmp в библиотеке одной малоизвестной "учебной" ОС реального времени. Учебной в том смысле, что по этой системе разве что доклады, презентации и статьи делали, где-то реально она вряд ли использовалась.
    Для интересующихся http://pok.safety-critical.net/

    Запостил: WGH, 14 Ноября 2013

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

    • Шит Реального Времени
      Ответить
    • говно в строках 15 и 16
      Ответить
      • Не только в них же.
        Ответить
        • А ещё оно зависит от индейца.
          Ответить
          • http://webplus.info/images/wpi.cache/cards/c_1258_04c.jpg


            Типичный ссишникк. (Внимание, ссылка изменилась.)
            Ответить
      • А что не так с ними? 4 байта сравнили, на 4 байта заинкрементили. В 15-16 строке как раз все норм :) Чего не скажешь об остальном коде.
        Ответить
    • Царя не хватает.
      Ответить
    • > for safety-critical systems (avionics, aerospace and so on)
      O_o. А я то думаю, что это самолеты падают...
      Ответить
    • Какая щедрая жена, сравнивает аж в четыре раза больше памяти, чем запросил пользователь...
      Ответить
      • Ну может быть это особый memcpy, которому размер указывают в словах, а не в байтах. Это же ось для safety-critical систем...
        Ответить

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