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

    +161

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    String^ TDebug::GetCurrentThreadFunctionName(int CallFunctionIndex)
    {
    	return (gcnew StackTrace(true))->GetFrame(CallFunctionIndex)->GetMethod()->ToString();
    };
    
    void TDebug::ShowCurrentFunctionName(void)
    {
    	Windows::Forms::MessageBox::Show(GetCurrentThreadFunctionName(2));
    };

    Помоему, в Microsoft Visual Studio 2010 отладчик для С++\CLI давно есть. :)

    Говногость, 03 Февраля 2011

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

    +172

    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
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    //уничтожение буфера
    void delbuf(void* &bf, char ntype)
    {
    	if (ntype=='C')
    	{
    		if (bf!=(char*) NULL) 
    		{
    			delete[] bf;
    			bf=NULL;
    		}
    		return;
    	}
    	if (ntype=='B')
    	{
    		if (bf!=(BYTE*) NULL) 
    		{
    			delete[] bf;
    			bf=NULL;
    		}
    		return;
    	}
    	if (ntype=='I')
    	{
    		if (bf!=(int*) NULL) 
    		{
    			delete[] bf;
    			bf=NULL;
    		}
    		return;
    	}
    	if (ntype=='F')
    	{
    		if (bf!=(double*) NULL) 
    		{
    			delete[] bf;
    			bf=NULL;
    		}
    		return;
    	}
    	if (ntype=='D')
    	{
    		if (bf!=(double*) NULL) 
    		{
    			delete[] bf;
    			bf=NULL;
    		}
    		return;
    	}
    	if (ntype=='W')
    	{
    		if (bf!=(WORD*) NULL) 
    		{
    			delete[] bf;
    			bf=NULL;
    		}
    		return;
    	}
    	if (ntype=='L')
    	{
    		if (bf!=(long*) NULL) 
    		{
    			delete[] bf;
    			bf=NULL;
    		}
    		return;
    	}
    	if (ntype=='S')
    	{
    		if (bf!=(short*) NULL) 
    		{
    			delete[] bf;
    			bf=NULL;
    		}
    		return;
    	}
    	if (ntype=='R')
    	{
    		if (bf!=(DWORD*) NULL) 
    		{
    			delete[] bf;
    			bf=NULL;
    		}
    		return;
    	}
    	return;
    }

    86 строк вместо простого delete [] bf

    glprizes, 02 Февраля 2011

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

    +158

    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
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    // TEMPLATE FUNCTION rotate
    template<class _FI> inline
    	void rotate(_FI _F, _FI _M, _FI _L)
    	{if (_F != _M && _M != _L)
    		_Rotate(_F, _M, _L, _Iter_cat(_F)); }
    template<class _FI> inline
    	void _Rotate(_FI _F, _FI _M, _FI _L,
    		forward_iterator_tag)
    	{for (_FI _X = _M; ; )
    		{iter_swap(_F, _X);
    		if (++_F == _M)
    			if (++_X == _L)
    				break;
    			else
    				_M = _X;
    		else if (++_X == _L)
    			_X = _M; }}
    template<class _BI> inline
    	void _Rotate(_BI _F, _BI _M, _BI _L,
    		bidirectional_iterator_tag)
    	{reverse(_F, _M);
    	reverse(_M, _L);
    	reverse(_F, _L); }
    template<class _RI> inline
    	void _Rotate(_RI _F, _RI _M, _RI _L,
    			random_access_iterator_tag)
    	{_Rotate(_F, _M, _L, _Dist_type(_F), _Val_type(_F)); }
    template<class _RI, class _Pd, class _Ty> inline
    	void _Rotate(_RI _F, _RI _M, _RI _L, _Pd *, _Ty *)
    	{_Pd _D = _M - _F;
    	_Pd _N = _L - _F;
    	for (_Pd _I = _D; _I != 0; )
    		{_Pd _J = _N % _I;
    		_N = _I, _I = _J; }
    	if (_N < _L - _F)
    		for (; 0 < _N; --_N)
    			{_RI _X = _F + _N;
    			_RI _Y = _X;
    			_Ty _V = *_X;
    			_RI _Z = _Y + _D == _L ? _F : _Y + _D;
    			while (_Z != _X)
    				{*_Y = *_Z;
    				_Y = _Z;
    				_Z = _D < _L - _Z ? _Z + _D
    					: _F + (_D - (_L - _Z)); }
    			*_Y = _V; }}

    Header из Microshit Visual C++ 6.0.

    Говногость, 02 Февраля 2011

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

    +155

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    #if __STDC_WANT_SECURE_LIB__
    _Check_return_wat_ _CRTIMP_ALTERNATIVE errno_t __cdecl wcscat_s(_Inout_z_cap_(_SizeInWords) wchar_t * _Dst, _In_ rsize_t _SizeInWords, _In_z_ const wchar_t * _Src);
    #endif
    __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(errno_t, wcscat_s, _Deref_prepost_z_ wchar_t, _Dest, _In_z_ const wchar_t *, _Source)
    __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1(wchar_t *, __RETURN_POLICY_DST, _CRTIMP, wcscat, _Pre_cap_for_(_Source) _Prepost_z_, wchar_t, _Dest, _In_z_ const wchar_t *, _Source)
    _Check_return_ _CRTIMP _CONST_RETURN wchar_t * __cdecl wcschr(_In_z_ const wchar_t * _Str, wchar_t _Ch);
    _Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t * _Str1, _In_z_ const wchar_t * _Str2);
    #if __STDC_WANT_SECURE_LIB__
    _Check_return_wat_ _CRTIMP_ALTERNATIVE errno_t __cdecl wcscpy_s(_Out_z_cap_(_SizeInWords) wchar_t * _Dst, _In_ rsize_t _SizeInWords, _In_z_ const wchar_t * _Src);
    #endif

    Хедеры из Microshit Visual Studio. Там так почти везде...

    Говногость, 02 Февраля 2011

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

    +160

    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
    41. 41
    42. 42
    43. 43
    //перевод целого числа в строку
    	//num-число
    	//nn-длина поля
    	char* num10toc(int num, int nn=4)
    	{
    		int i;
    		int sgmin=0;
    		int	xnum=num;
    		char* p=lnum;
    		if (xnum<0) 
    		{
    			sgmin=1;
    			xnum=-xnum;
    
    		}
    		memset(lnum,0,WMAX+1);
    		memset(lnum,0x20,WMAX);
    		i=lenint(xnum);
    		int j=i;
    		int mm=nn-i-sgmin;
    		if (mm>0)
    		{
    			p+=mm;
    		}
    		if (sgmin!=0)
    		{
    			*p='-';
    			p++;
    		}
    		if (xnum==0)
    		{
    			*p='0';
    			return &lnum[0];
    		}
    		while (xnum>0)
    		{
    			*(p+i-1)=(char)(xnum%10+0x30);
    			xnum/=10;
    			i--;
    		}
    		*(p+j)=0;
    		return &lnum[0];
    	}

    Загадка: что выведется в следующих случаях?

    printf("%s\n", num10toc(0, 5));
    printf("%s\n", num10toc(1, 5));
    printf("%s\n", num10toc(12, 5));
    printf("%s\n", num10toc(123, 5));
    printf("%s\n", num10toc(1234, 5));
    printf("%s\n", num10toc(12345, 5));
    printf("%s\n", num10toc(123456, 5));

    glprizes, 01 Февраля 2011

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

    +163

    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
    #define nCyrLang 40
    
    char CyrNumLang[nCyrLang];
    
    memset(&CyrNumLang[0],0,nCyrLang);
    
    CyrNumLang[1]=7;
    CyrNumLang[2]=9;
    CyrNumLang[3]=11;
    CyrNumLang[4]=83;
    CyrNumLang[5]=84;
    CyrNumLang[6]=85;
    CyrNumLang[7]=86;
    CyrNumLang[8]=44;
    CyrNumLang[9]=87;
    CyrNumLang[10]=48;
    CyrNumLang[11]=88;
    CyrNumLang[12]=89;
    CyrNumLang[13]=53;
    CyrNumLang[14]=56;
    CyrNumLang[15]=6;

    Труъ способ инициализации массивов.

    glprizes, 01 Февраля 2011

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

    +165

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    QTime time;
        time.start();
    
        for (int i = 0; i < 100; ) {
            if (time.elapsed() > 10) {
                time.start();
                ++i;
            }
        }

    Организация задержки.

    jalil, 31 Января 2011

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

    +158

    1. 1
    2. 2
    lblSoundBar = new render::gui::BitmapLabel(strings::StaticString(L"Music"), GameFonts::instance().getGUIFont(), math::float2(380.0f, 225.0f), 0xFFFFFFFF, 1.0f, 0.0f);
    lblMusicBar = new render::gui::BitmapLabel(strings::StaticString(L"Sound"), GameFonts::instance().getGUIFont(), math::float2(380.0f, 315.0f), 0xFFFFFFFF, 1.0f, 0.0f);

    Kirinyale, 31 Января 2011

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

    +167

    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
    bool c=(a>=4 && a<=9);
    switch(c)
    {
      case true:
              {
                      cout<<"yes"<<endl;
                      break;
              }
      case false:
              {
                      cout<<"No"<<endl;
                      break;
              }
    }

    qbasic, 31 Января 2011

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

    +168

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    void WaitExit()
    {
        char p;
        std::cout << "\nPlay some melody on keyboard and press [ENTER] for EXIT" << std::endl;
        std::cin >> p;
    }

    Play some melody..

    IkSin, 28 Января 2011

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