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

    +164

    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
    21. 21
    22. 22
    >>>http://www.viva64.com/ru/a/0023/
    #ifdef DEBUG_MODE
      #define WriteLog printf
    #else
      inline int StubElepsisFunctionForLog(...) { return 0; }
      static class StubClassForLog {
      public:
        inline void operator =(size_t) {}
      private:
        inline StubClassForLog &operator =(const StubClassForLog &)
          { return *this; }
      } StubForLogObject;
      
      #define WriteLog \
        StubForLogObject = sizeof StubElepsisFunctionForLog
    #endif
      WriteLog("Coordinate = (%d, %d)\n", x, y);
    &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
    ССЗБ?
    P.S #define WriteLog(...) 
                or 
        #define WriteLog __noop

    Запостил: dc9e6c73ef5541f1, 05 Сентября 2011

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

    • неверю. не бывает таких идиотов, которые такое могут написать.
      Ответить
      • по ссылке посмотрите:

        > Карпов Андрей Николаевич, к.ф.-м.н., научный консультант компании "СиПроВер", специализирующейся на вопросах повышения качества программных систем. Занимается теоретическими и практическими вопросами статического анализа кода.
        Ответить
    • release без логов вообще?

      и где здесь С++0х11?
      Ответить
    • #ifdef DEBUG_MODE
      #define WriteLog(args) printf ## args
      #else
      #define WriteLog(args) ((void)0)
      #endif
      .......
      WriteLog(("Coordinate = (%d, %d)\n", x, y));
      Ответить
      • собственно чтобы уйти от двойных скобок автор и наговнокодил
        (это неэлегантно по его словам) посмотрите сами http://www.viva64.com/ru/a/0023/
        наверное у него не поддерживаются макросы с переменым количеством
        аргументов и нет никаких компиляторо - зависимых фишек типа __noop
        Ответить
    • #define WriteLog(...)
      Нихуя.
      По стандарту так нельзя.
      Это есть только в Си-99 стандарте.
      А он использовал это в говнокоде.
      Ответить
    • Квадратные колёса такие квадратные
      Ответить
      • Закрепил фалоимитатор на сиденье твоего вилописеда и поставил на него треуголбные колеса. Проверь.
        Ответить
    • Так вот он какой "статический анализатор кода".
      Ответить
    • >СС3Б?
      ДОСМОТ?
      Ответить
    • показать все, что скрытоvanished
      Ответить

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