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

    +75

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    int i, n;
    for(n = 0; n < 3; n++)
    {
       switch(n){
             case 0:
                    n+=i;
             case 1:
                    n-=i;
             case 2:
                    n*=i;
       }
    }

    Написал это, встал и хорошенько вымыл руки с мылом.

    http://programmersforum.ru/showthread.php?t=241288

    Stertor, 26 Июля 2013

    Комментарии (17)
  2. C++ / Говнокод #13487

    +12

    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
    struct c_test
    {
      int value;
      
      c_test(void)
      {
        (void)new (this) c_test (10);
      }
      
      c_test(int v)
      {
        value = v;
      }
    };

    LispGovno, 26 Июля 2013

    Комментарии (18)
  3. C++ / Говнокод #13484

    +8

    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
    23. 23
    24. 24
    25. 25
    26. 26
    #include <pthread.h>
    template<class T = long long>
    class AtomicCounter
    {
        public:
            explicit AtomicCounter( T value = 0 ): _count( value ) { pthread_spin_init( &_lock, PTHREAD_PROCESS_PRIVATE );};
            ~AtomicCounter()  { pthread_spin_destroy( &_lock );    };
    
            T operator++(int) volatile {  return interlockFetchAndAdd( 1 );      };
            T operator--(int) volatile {  return interlockFetchAndAdd( -1 );     };
            T operator() ()   volatile {  return interlockFetchAndAdd( 0 );      }
    
        private:
            volatile T    _count;
            pthread_spinlock_t _lock;
    
            T interlockFetchAndAdd( int delta ) volatile
            {
                T x = 0;
                pthread_spin_lock( &_lock );
                x = _count;
                _count += delta;
                pthread_spin_unlock(&_lock);
                return x;
            }
    };

    Принцип наименьшего удивления, говорите

    roman-kashitsyn, 26 Июля 2013

    Комментарии (51)
  4. C++ / Говнокод #13483

    +14

    1. 1
    2. 2
    3. 3
    4. 4
    std::string buf_str = str;
    buf_str.erase( 0, strBlobFsParam.size() + 1 );
    buf_str.erase( buf_str.begin(), find_if(buf_str.begin(), buf_str.end(), not1( ptr_fun<int, int>(isspace) ) ) );
    buf_str.erase( find_if( buf_str.rbegin(), buf_str.rend(), not1( ptr_fun<int, int>(isspace) ) ).base(), buf_str.end() );

    trim головного мозга

    roman-kashitsyn, 26 Июля 2013

    Комментарии (7)
  5. C++ / Говнокод #13476

    +9

    1. 1
    2. 2
    3. 3
    HRESULT hr = ReadGenericXMLFile(srcStorage, pagePath, result);
      if (hr == S_FALSE) return STG_E_FILENOTFOUND;  // File must exist
      if (FAILED(hr)) return hr;

    Могу понять, обратное, когда вызывающая функция просто возвращает "false" при любом неудачном вызове внутренней функции: нет файла / нет доступа / runtime error и т.д. Здесь же наоборот, при "общем" неудачном вызове внутренней функции возвращается "конкретное" сообщение об ошибке.

    Fogbit, 25 Июля 2013

    Комментарии (36)
  6. C++ / Говнокод #13474

    +17

    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
    struct c_log
    {
      template<typename T> const c_log& operator << (const T& value)
      {
          //...
      }
    };
    
    template<> const c_log& c_log::operator << <p_wstr> (const p_wstr& value)
    {
      fwrite(value, sizeof(wchar_t), wcslen(value), log_file);
      return *this;
    }

    LispGovno, 25 Июля 2013

    Комментарии (11)
  7. C++ / Говнокод #13457

    +7

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    namespace engine { namespace ui { class Console; } }
    
    class Dummy
    {
       engine::ui::Console * _ptr;
    };

    Решение проблемы с перекрёстными #include, когда классы должны хранить указатели друг на друга. Простое объявление class engine::ui::Console; не работает.
    Не в первый раз сталкиваюсь с этой проблемой из-за примитивной системы импорта.

    an0nym, 20 Июля 2013

    Комментарии (18)
  8. C++ / Говнокод #13456

    +17

    1. 1
    2. 2
    3. 3
    #if defined(SDL_MAIN_NEEDED) || defined(SDL_MAIN_AVAILABLE)
    #define main    SDL_main
    #endif

    Боже, за что??!

    http://hg.libsdl.org/SDL/file/75726efbf679/include/SDL_main.h

    bazhenovc, 19 Июля 2013

    Комментарии (13)
  9. C++ / Говнокод #13454

    +5

    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
    23. 23
    24. 24
    25. 25
    #include <iostream>
     
    using namespace std;
     
    void f(void){cout<<"f"<<endl;}
    void f1(void){cout<<"f1"<<endl;}
     
    bool secondIfIsTryed(){cout<<"secondIfIsTryed"<<endl;return true;}
     
    #define asserts(Condition) {cout<<"Assert"<<endl;}
     
    int main() {
        if(true)
            if(secondIfIsTryed() && false)
                f();
            else
                f1();
        
        if(true)
            if(secondIfIsTryed() && false)
                asserts(true)
            else
                f1();
        return 0;
    }

    Помните того вечно сомневающегося знакомого, тест крестов, написанный которым я недавно приводил?
    http://ideone.com/9Q61D1
    В этот раз под его глуповатый, но пытливый взгляд попал макрос ассерта. Написан он конечно не так, как в этом тесте, но имеет код вида:

    #define asserts(Condition) {/*...*/}


    В итоге он сделал умозаключение: "Вокруг меня собрались голубцы" и надулся.

    LispGovno, 19 Июля 2013

    Комментарии (14)
  10. C++ / Говнокод #13446

    +3

    1. 1
    typedef std::vector/*deque recommended*/<index_history_item> index_history;

    Как понимать этот комментарий?

    HaskellGovno, 18 Июля 2013

    Комментарии (24)