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

    +68.1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    void TInputTID::AvWnd(GtkWidget* w, char* name, int bOut, void (*cb) (int wnd, int data))
    {
        // Тут объявления локальных переменных и не относящиеся к делу манипуляции
        if(((int)cb) != -1) // Шедевр
        {
          gtk_signal_connect ((GtkObject*)hButOK,
                               "clicked",GTK_SIGNAL_FUNC(cb),hOutWndBox);
        }
    }

    Вечное сияние чистого разума. Новое слово в арифметике указателей.

    mutanabbi, 13 Февраля 2010

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

    +63.6

    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
    struct window_t
    {
        int Frame;
        int Window;
        int Title;
    };
    
    int TWindowTID::CreateWindow(int width,int height,int posX,int posY,int WindowType,int &win)
    {
        GtkWidget* fixed;
        fixed = get_new_fixed()
        window_t* w0 = new window_t;
        // здесь всякие разные манипуляции разной степени бессмысленности
        w0->Window=reinterpret_cast<int>(fixed);
        return static_cast<int>(w0->Window);
    }

    Буйство кастов

    mutanabbi, 12 Февраля 2010

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

    +929.1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    page_t* make_page()
    {
     page_t* p = new page_t;
     // заполнение
     return p;
     delete(p);
    }

    я в шоке... не знаю что хотел сказать аффтар (недоступен)... не могу даже прокомментировать ЭТО %)

    zaufi, 11 Февраля 2010

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

    +53.4

    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
    27. 27
    28. 28
    void __fastcall TUsers::DBG2DrawColumnCell(TObject *Sender,
          const TRect &Rect, int DataCol, TColumn *Column,
          TGridDrawState State)
    {
    
        const int iIsChecked[2] = {DFCS_BUTTONCHECK | DFCS_FLAT, DFCS_BUTTONCHECK | DFCS_CHECKED | DFCS_FLAT};
        int DrawState;
        TRect DrawRect;
        if (State.Contains(gdFocused) == true)
        {
            if (Column->Field->FieldName == dbchkApplyDoc2->DataField)
            {
                ShowMessage("Зацикливает :( ");
                ShowMessage("Эта надпись будет повторяться бесконечно - почему ???");
            }
        }
        else
        {
            if (Column->Field->FieldName == dbchkApplyDoc2->DataField)
            {
                DrawRect = Rect;
                InflateRect(&DrawRect, -2, -2); // Matters ?
                DrawState = iIsChecked[Column->Field->AsBoolean];
                DBG2->Canvas->FillRect(Rect);
                DrawFrameControl(DBG2->Canvas->Handle, &DrawRect, DFC_BUTTON, DrawState);
            }
        }
    }

    Почему

    Nemerle, 11 Февраля 2010

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

    +68.6

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    // I'VE SO FUCKED CONVERTING THOSE FUCKING TYPES OF STUPID DATA
    		// TAKE IT, FUCKING STRAUSTRUP AND K&R!!!!!!!!!!!
    		if (text[i]=='1') (intarray[i]=1);
    		if (text[i]=='2') (intarray[i]=2);
    		if (text[i]=='3') (intarray[i]=3);
    		if (text[i]=='4') (intarray[i]=4);
    		if (text[i]=='5') (intarray[i]=5);
    		if (text[i]=='6') (intarray[i]=6);
    		if (text[i]=='7') (intarray[i]=7);
    		if (text[i]=='8') (intarray[i]=8);
    		if (text[i]=='9') (intarray[i]=9);
    		if (text[i]=='0') (intarray[i]=0);

    i0ngunn3r, 11 Февраля 2010

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

    +53.4

    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
    #include <iostream>
    using namespace std;
    struct CandyBar
    {
      char name[20];
      float weight;
      int energy;
    };
    int main()
    {
      CandyBar * snack = new CandyBar;
      *snack =
      {
        "Moncha Munch",
        2.3,
        350
      };
      cout << "Имя = " << *snack->name;
      cout << "\nМасса = " << (*snack).weight;
      cout << "\nЭнергетическая ценность = " << snack->energy << "\n";
      return 0;
    }

    unnicked, 09 Февраля 2010

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

    +61.9

    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
    27. 27
    28. 28
    //Обьявление класса в хедере с последующей реализацией:
    template<class TConstructStrategy>
    class TClass
    {
    public:
    	TConstructStrategy __ctor;
                      //...Прочие методы...
    };
    
    //...Реализация прочих методов класса...
    
    //================================================================
    
    //Конструктор с переменным числом параметров, типа функтор:
    //Тоесть обьявлено где-то в коде проекта и передаётся, как параметр при конструировании.
    typedef void TConstract(int a);
    template<>
    TClass<TConstract>::TClass(int a)
    {
    	//doing...
    };
    
    int main(int argc, char* argv[])
    {
              //...
              TClass<TConstract> A(5);
              //...
    }

    Это говнокод, но не результат работы над проектом, а результат насмешек над компилятором MSVC 6.0.
    Основано на обявлении типа-функции:
    typedef void TConstract(int a);, но тк конструктор не функция - используется внутренее имя конструктора MSVC6.0:
    void __ctor(void);, согласно которому он всё-таки функция.
    __dtor - "внутренее" имя деструктора, кстати.
    Спалить "секретное" имя обычно можно в сообщениях об ошибках c участием этих имён. При входе в конструктор/деструктор через отладчик под дизасемблером(наверное). В стеке вызовов отладчика(наверное). Наверное ещё как-нибудь, например проходом HEX редактора по экзешнику компилятора и прилижащим dll...
    Итак для обсуждения (хотя и не собираюсь это использовать):
    1)Как ещё, кроме странных пергрузок, представленного выше метода конструктора-функтора, и вызовов типа A.__ctor(); / A.__dtor() это можно использовать?
    2)Какие "скрытые" имена конструкторов/деструкторов у других компиляторов? Я пробовал в MSVC6.0. В MSVS 2008 при первом расмотрении "внутреннее" имя другое и сходу не палится.
    Для примера приведу метод с "обычным" функтором (на самом деле он не самый обычный):

    //Обьявление класса в хедере с последующей реализацией:
    template<class TStrategy>
    class TClass
    {
    public:
    TStrategy func;
    //...Прочие методы...
    };

    //...Реализация прочих методов класса...

    //================================================================

    //Функтор:
    //Тоесть обьявлено где-то в коде проекта и передаётся, как параметр при конструировании.
    typedef void TFunc(void);
    template<>
    void TClass<TFunc>::func(void)
    {
    //doing...
    };
    int main(int argc, char* argv[])
    {
    //...
    TClass<TFunc> A;
    A.func();
    //...
    };

    fake_guest, 05 Февраля 2010

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

    +56.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
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    void ff(const TCHAR *curDir)
    {
    	WIN32_FIND_DATA FindFileData;
    	HANDLE hFind;
    	TCHAR cd[MAX_PATH], res[MAX_PATH], dirname[MAX_PATH], filename[MAX_PATH];
    	strcpy_s(cd, MAX_PATH, curDir);
    	strcat_s(cd, MAX_PATH, "\\*.*");
    	hFind = FindFirstFile(cd, &FindFileData);
    	BOOL r = hFind != INVALID_HANDLE_VALUE;
    	while (r) 
    	{
    		r=FindNextFile(hFind, &FindFileData);
    		if (FindFileData.cFileName[0] != '.') try
    		{
    			strcpy_s(cd, MAX_PATH, curDir);
    			strcat_s(cd, MAX_PATH, "\\");
    			strcat_s(cd, MAX_PATH, FindFileData.cFileName);
    			if (!r) // если ссылка последняя смысле handle то записываем имя файла
    				strcpy_s(filename, MAX_PATH, FindFileData.cFileName);
    			if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) 
    				ff(cd);
    			else
    			{
    				char* k=NULL;
    				if (!r)
    					k=strstr(filename,FindFileData.cFileName); // проверяем если является имя каталога подстрокой в имени файла хреначим на вывод(при том что ссылка была последней)
    				// смысле на вывод хреначим вот здесь
    				if (k!=NULL)
    				{
    					CharToOem(cd, res);
    					cout<<res<<endl;
    				}
    			}
    		}
    		catch(...) 
    		{
    			cout<<"Can not display file name"<<endl;
    		}
    	} 
    }

    xXx_totalwar, 05 Февраля 2010

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

    +48.3

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    #define begin {
    #define end }
    //....
    #define repeat do{
    #define until(a) }while(!(a))
    // и т.д.

    Боян, конечно, просто вспомнил, глядя на предыдущий говнокод с макросами. Это в институте препод на одной из лекций всерьёз писал на доске.
    Видимо, паскальщик еще советской закалки :)

    GovnocoderJr, 02 Февраля 2010

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

    +144.7

    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>
    #define lulz int
    #define lulZ main()
    #define luLz {
    #define luLZ }
    #define lUlz cout
    #define lULz cin
    #define lUlZ ;
    #define LuLZ <<
    #define LuLz >>
    #define LULz =
    #define LULZ +
    #define lolz endl
    lulz lulZ
    luLz
      lulz Lulz lUlZ
      lUlz LuLZ" Смешная сумма " LuLZ lolz lUlZ
        lULz LuLz Lulz lUlZ
      lUlz LuLZ Lulz lUlZ
      lUlz LuLZ" + " lUlZ
    lulz lULZ lUlZ
      lUlz LuLZ "LULZ?" LuLZ lolz lUlZ
      lULz LuLz lULZ lUlZ
      lUlz LuLZ Lulz LuLZ " + " LuLZ lULZ LuLZ " = " LuLZ Lulz + lULZ lUlZ
    luLZ

    "Смешная сумма" (c) автор

    darkcheg, 02 Февраля 2010

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