1. Список говнокодов пользователя Aleskey

    Всего: 11

  2. C++ / Говнокод #7149

    +166

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    #include <iostream>
    using namespace std;
    
    int main () {
      for( struct {int i; long i2;} x = {1, 1};
           x.i2 <= 100;
           x.i++, x.i2 = x.i * x.i ) {
        cout << x.i2 << endl;
      }
      return 0;
    }

    Поскольку реального ГК нет, добавлю синтетического.
    NB: Под MSVC такое не пройдет. g++ - ok: http://codepad.org/JesKsnMQ

    http://jia3ep.blogspot.com/2010/07/struct-in-for-loop.html

    Aleskey, 04 Июля 2011

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

    +166

    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
    // say this is some existing structure. And we want to use
    // a list. We can tell it that the next pointer
    // is apple::next.
    struct apple {
        int data;
        apple * next;
    };
    
    // simple example of a minimal intrusive list. Could specify the
    // member pointer as template argument too, if we wanted:
    // template<typename E, E *E::*next_ptr>
    template<typename E>
    struct List {
        List(E *E::*next_ptr):head(0), next_ptr(next_ptr) { }
    
        void add(E &e) {
            // access its next pointer by the member pointer
            e.*next_ptr = head;
            head = &e;
        }
    
        E * head;
        E *E::*next_ptr;
    };
    
    int main() {
        List<apple> lst(&apple::next);
    
        apple a;
        lst.add(a);
    }

    c++ страшный язык :) (часть вторая)

    C++: Pointer to class data member: http://stackoverflow.com/questions/670734/c-pointer-to-class-data-member

    Такие конструкции "E *E::*next_ptr;" без подготовки не осилить.

    Aleskey, 02 Июля 2011

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

    +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
    22. 22
    23. 23
    #include <stdio.h>
    
    const int (&getArray())[10] {
      static int tmp[10] = {1,2,3,4,5,6,7,8,9,10};
      return tmp;
    }
    
    void foo(const int (&refArr)[10])
    {
      size_t size = sizeof(refArr); // returns 10*sizeof(int)
      printf ("Array size: %d\r\n", size);
    }
    
    
    int main() {
      foo(getArray());
    
      printf ("%d", getArray()[0]);
      for (size_t i=1; i<sizeof(getArray())/sizeof(getArray()[0]); ++i)
        printf (",%d", getArray()[i]);
        
      return 0;
    }

    http://codepad.org/rPl6b7IS

    c++ страшный язык :)
    Извращения на тему: http://heifner.blogspot.com/2005/06/c-reference-to-array.html

    Aleskey, 30 Июня 2011

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

    +162

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    setGeometry((int)(QApplication::desktop()->width() -
    (QApplication::desktop()->width() -
      (QApplication::desktop()->width() / 2)) * 1.5) / 2,
      (int)(QApplication::desktop()->height() -
    (QApplication::desktop()->height() -
      (QApplication::desktop()->height() / 2)) * 1.5) / 2,
      (int)((QApplication::desktop()->width() -
    (QApplication::desktop()->width() / 2)) * 1.5),
      (int)((QApplication::desktop()->height() -
    (QApplication::desktop()->height() / 2)) * 1.5));

    Center app window!

    Aleskey, 24 Июня 2011

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

    +150

    1. 1
    2. 2
    nPosition = !bInvert ? data->pos_back
                                       : data->pos_front;

    Aleskey, 12 Апреля 2011

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

    +158

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    std::string get(const std::string& name) {
          NamedPropertyMap::iterator it = properties.find(name);
          if (it == properties.end())
            return false;
    
          std::string ret;
          it->second->Get(ret);
          return ret;
        }

    return false; компилится на ура в VS2008

    Aleskey, 30 Марта 2011

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

    +159

    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
    m_hSemaphore		= CreateSemaphore( NULL, 1, 1, NULL );
    ....
    
    void CTestGUIDlg::OnBnClickedButtonStartStream()
    {
    	WaitForSingleObject(m_hSemaphore, INFINITE);
    	if(m_ThreadHandle)
    	{
    		AfxMessageBox("Stop running stream!", MB_ICONEXCLAMATION);
    		return;
    	};
    
    	m_ThreadHandle	= NULL;
    	m_StreamType	= 1;
    	m_ThreadHandle =					(HANDLE)_beginthreadex(NULL,
    										0,
    										streamProcedure,
    										static_cast<LPVOID>( this ),
    										0,
    										NULL);	
    
    	if(!m_ThreadHandle) 
    	{
    		m_StreamType	= 0;
    	}
    	UpdateButtons();
    	ReleaseSemaphore(m_hSemaphore, 1, NULL);
    }

    классика жанра

    Aleskey, 30 Марта 2011

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

    +161

    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
    class SomeClass
    {
    public:
    	__declspec(dllexport) SomeClass(UINT i_Width, UINT i_Height, UINT i_Lines, float i_Result, bool i_bAutoFill = false, и т.д. еще штук 5);
    	__declspec(dllexport) SomeClass::~SomeClass();
    
    	__declspec(dllexport) void setCallbackFunction(void	(*i_pCallbackFunction)(SomeClass* i_pSomeClass)) { m_pCallbackFunction = i_pCallbackFunction; };	
    	__declspec(dllexport) bool isFinished() { return m_bIsFinished; };
    	__declspec(dllexport) void clear() { m_ResultData.clear(); };
    	__declspec(dllexport) bool save(const char* i_sFilename);
    
    	...
    
    private:	
    	bool createThread();
    	void initWork();	
    	void loopWork();
    	void stepWork();
    	void exitWork();
    
    	static UINT WINAPI workProc(LPVOID lpContext);
    
    	inline bool someInlineFunction(UINT i_Index);
    	...
    	
    private:
    	HANDLE				m_ThreadHandle;
    	bool				m_bIsFinished;
    	bool				m_bThreadStopped;
    	bool				m_bThreadClosed;
    	vector<SomeType>	m_a...; 
    	string				m_sFilename;
    	
    	void				(*m_pCallbackFunction)(SomeClass* i_pSomeClass);
    	
    	...
    };

    Это краткий пересказ того, что шло вместе с DLL, только длиннее и с комментариями к каждой строке и доксигеновской докой!

    Aleskey, 30 Марта 2011

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

    +161

    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
    /////////////////////////////////////////////////////////////////////////////
    #define TWAIT(_WAIT_EXPR_, _TIMEOUT_)	TWAIT_EX(_WAIT_EXPR_, _TIMEOUT_, 0)
    #define TWAIT_(_WAIT_EXPR_, _TIMEOUT_)	TWAIT_EX_(_WAIT_EXPR_, _TIMEOUT_, 0)
    /////////////////////////////////////////////////////////////////////////////
    #define TWAIT_DECL_VARS														\
    	DWORD TWAIT_START = GetTickCount();										\
    	bool TWAIT_RET = true;													
    /////////////////////////////////////////////////////////////////////////////
    #define TWAIT_EX(_WAIT_EXPR_, _TIMEOUT_, _ABORT_)							\
    	DWORD TWAIT_START = GetTickCount();										\
    	bool TWAIT_RET = true;													\
    	do {ProcessMessage(1);													\
    		TWAIT_RET = GetTickCount() - TWAIT_START < (DWORD)(_TIMEOUT_);		\
    		if( !TWAIT_RET ) break;												\
    		if( _ABORT_ != 0 ) { TWAIT_RET = false; break; }					\
    	} while( (_WAIT_EXPR_) == 0 );
    /////////////////////////////////////////////////////////////////////////////
    #define TWAIT_EX_(_WAIT_EXPR_, _TIMEOUT_, _ABORT_)							\
    	TWAIT_START = GetTickCount();											\
    	TWAIT_RET = true;														\
    	do {ProcessMessage(1);													\
    		TWAIT_RET = GetTickCount() - TWAIT_START < (DWORD)(_TIMEOUT_);		\
    		if( !TWAIT_RET ) break;												\
    		if( _ABORT_ != 0 ) { TWAIT_RET = false; break; }					\
    	} while( (_WAIT_EXPR_) == 0 );

    lambdas, functors... макрос - это наше все... а ProcessMessage(1) тоже радует.

    Aleskey, 30 Марта 2011

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

    +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
    CString convertInt2Str(int i_Number, int i_NumDigits)
    {
    	CString str = "";
    	for(int j=1; j<i_NumDigits; j++)
    	{
    		int digits = (int) pow((float) 10, j);
    		
    		if(i_Number<digits) str += "0";			
    	}	
    	CString num;
    	num.Format("%d", i_Number);
    	return str+num;
    }

    Adding leading zeros...

    Aleskey, 29 Марта 2011

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