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

    +2

    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
    void MeasureWorker::measure()
    {
        QVector< QVector<double> > *S12_AmplitudeCurveArray = new QVector< QVector<double> >;
        QVector<double> *S11_Amplitudes = new QVector<double>;
        mutex = new QMutex();
    
        if (!running) {
           return;
        }
    
        switch(mode) {
            case AUTO_MODE: {
                if (type == SofNum) {
                    if (!readSofNum()) {
                        if (deviceProblem) {
                            closeDevices();
                            stop();
                        }
                    }
                }
                if (type == SofFreq) {
                    if (!readSofFreq(S12_AmplitudeCurveArray, S11_Amplitudes)) {
                        if (deviceProblem) {
                            closeDevices();
                            stop();
                        }
                    }
                }
    
    // Дальше пока что неинтересно...
    
    bool MeasureWorker::readSofFreq(QVector<QVector<double> > *S12_AmplitudeCurveArray,
                                    QVector<double> *S11_AmplitudeCurve)
    {
        if (selectedChannel.CH1) {
            if (!oneReadSofFreq(S11_AmplitudeCurve,
                                S12_AmplitudeCurveArray, 1)) {
                return false;
            }
        } else {
            mutex->lock();
            S12_AmplitudeCurveArray->append(QVector<double>(NP51, 0.0));
            try {
                r4m->setSweepParams(START, STOP, NP51);
                r4m->startSweep();
                QVector<ComplexType> freqS11 = r4m->getData("s22");
                if (freqS11.isEmpty()) {
                    throw std::invalid_argument("freqS11 is empty");
                }
                for(ComplexType complex : freqS11) {
                    S11_AmplitudeCurve->append(complex.toLogAmp());
                }
            } catch(std::exception &e) {
                r4m->error(e.what());
                deviceProblem = true;
                return false;
            }
            mutex->unlock();
            emit updateGraphS11f(S11_AmplitudeCurve);
            Sleep(TIME_SHIFT);
        }
    
    // ...

    - А если... дидлок?
    - Та похуй... там всёрно каждый раз новый мьютекс создается...

    Antervis, 21 Декабря 2016

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

    −1

    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
    int func() {
      try {
        throw 1;
      } catch (int i) {
        return i;
      }
    }
    
    asm:
    
    func():
            push    rbp
            mov     rbp, rsp
            push    rbx
            sub     rsp, 24
            mov     edi, 4
            call    __cxa_allocate_exception
            mov     DWORD PTR [rax], 1
            mov     edx, 0
            mov     esi, OFFSET FLAT:typeinfo for int
            mov     rdi, rax
            call    __cxa_throw
            cmp     rdx, 1
            je      .L5
            mov     rdi, rax
            call    _Unwind_Resume
    .L5:
            mov     rdi, rax
            call    __cxa_begin_catch
            mov     eax, DWORD PTR [rax]
            mov     DWORD PTR [rbp-20], eax
            mov     ebx, DWORD PTR [rbp-20]
            call    __cxa_end_catch
            mov     eax, ebx
            add     rsp, 24
            pop     rbx
            pop     rbp
            ret

    gcc 6.2. Ицц/шланг туда же. But why?

    Antervis, 21 Декабря 2016

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

    −4

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    #ifdef ret
    #undef ret
    #endif
    
    #define ret return

    Говнокод или всё-таки нет? :)

    Graviton, 20 Декабря 2016

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

    0

    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
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    void MeshChunkBuilder::processRemovingLights(unsigned colorIndex) noexcept
    {
        while (!lightRemoveNodes[colorIndex].empty())
        {
            // ...
            if (x)
            {
                const unsigned neightborLight = chunkModelNode->getLight(x - 1, y, z);
                const unsigned neightborLightBrightness = color::getColorComponent(neightborLight, colorIndex);
    
                if (neightborLightBrightness && neightborLightBrightness < lightBrightness)
                {
                    removeLight(*chunkModelNode, x - 1, y, z, neightborLight, colorIndex);
                }
                else if (neightborLightBrightness >= lightBrightness)
                {
                    lightPlaceNodes[colorIndex].push({chunkModelNode->getLightIndex(x - 1, y, z), chunkModelNode});
                }
            }
            else if (!x && neightbors.chunkLeft)
            {
                ChunkModel& chunkModel = neightbors.chunkLeft->getModel();
    
                const unsigned neightborLight = chunkModel.getLight(constants::CHUNK_SIZE - 1, y, z);
                const unsigned neightborLightBrightness = color::getColorComponent(neightborLight, colorIndex);
    
                if (neightborLightBrightness && neightborLightBrightness < lightBrightness)
                {
                    removeLight(chunkModel, constants::CHUNK_SIZE - 1, y, z, neightborLight, colorIndex);
                }
                else if (neightborLightBrightness >= lightBrightness)
                {
                    lightPlaceNodes[colorIndex].push({chunkModel.getLightIndex(constants::CHUNK_SIZE - 1, y, z), 
                            &chunkModel});
                }
            }
            if (x != constants::CHUNK_SIZE - 1)
            {
                const unsigned neightborLight = chunkModelNode->getLight(x + 1, y, z);
                const unsigned neightborLightBrightness = color::getColorComponent(neightborLight, colorIndex);
    
                if (neightborLightBrightness && neightborLightBrightness < lightBrightness)
                {
                    removeLight(*chunkModelNode, x + 1, y, z, neightborLight, colorIndex);
                }
                else if (neightborLightBrightness >= lightBrightness)
                {
                    lightPlaceNodes[colorIndex].push({chunkModelNode->getLightIndex(x + 1, y, z), chunkModelNode});
                }
            }
            else if (x == constants::CHUNK_SIZE - 1 && neightbors.chunkRight)
            {
                ChunkModel& chunkModel = neightbors.chunkRight->getModel();
    
                const unsigned neightborLight = chunkModel.getLight(0, y, z);
                const unsigned neightborLightBrightness = color::getColorComponent(neightborLight, colorIndex);
    
                if (neightborLightBrightness && neightborLightBrightness < lightBrightness)
                {
                    removeLight(chunkModel, 0, y, z, neightborLight, colorIndex);
                }
                else if (neightborLightBrightness >= lightBrightness)
                {
                    lightPlaceNodes[colorIndex].push({chunkModel.getLightIndex(0, y, z), &chunkModel});
                }
            }
            if (y)
            {
                const unsigned neightborLight = chunkModelNode->getLight(x, y - 1, z);
                const unsigned neightborLightBrightness = color::getColorComponent(neightborLight, colorIndex);
    
                if (neightborLightBrightness && neightborLightBrightness < lightBrightness)
                {
                    removeLight(*chunkModelNode, x, y - 1, z, neightborLight, colorIndex);
                }
                else if (neightborLightBrightness >= lightBrightness)
                {
                    lightPlaceNodes[colorIndex].push({chunkModelNode->getLightIndex(x, y - 1, z), chunkModelNode});
                }
            }
            if (y != constants::CHUNK_HEIGHT - 1)
            {
                const unsigned neightborLight = chunkModelNode->getLight(x, y + 1, z);
                const unsigned neightborLightBrightness = color::getColorComponent(neightborLight, colorIndex);
    
                if (neightborLightBrightness && neightborLightBrightness < lightBrightness)
                {
                    removeLight(*chunkModelNode, x, y + 1, z, neightborLight, colorIndex);
                }
                else if (neightborLightBrightness >= lightBrightness)
                {
                    lightPlaceNodes[colorIndex].push({chunkModelNode->getLightIndex(x, y + 1, z), chunkModelNode});
                }
            }
            // ...
        }
    }

    jangolare, 17 Декабря 2016

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

    +4

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    string check_pass (string password)
    {
        string valid_pass = "qwerty123";
        string error_message;
        if (password == valid_pass) {
            error_message = "Доступ разрешен."; //крутая ошибка
        } else {
            error_message = "Неверный пароль!";
        }
        return error_message;
    }

    https://code-live.ru/post/cpp-functions/

    Stud, 12 Декабря 2016

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

    0

    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
    void WaitCompletionProcesses(const std::vector<void*>* ProcessHandles)
    {
    	int count = ProcessHandles->size();
    	std::vector<void*> buffer = ProcessHandles[0];
    	std::vector<void*> running;
    	unsigned long int retcode;
    	void* handle;
    	do
    	{
    		for(int i = 0; i!=count; i++)
    		{
    			handle = buffer[i];
    			GetExitCodeProcess(handle, &retcode);
    			if(retcode==259)
    				running.push_back(handle);
    		}
    		count = running.size();
    		buffer = running;
    		running.clear();
    	}
    	while(count);
    }

    Пишу на досуге одну приблуду для IDE Geany, проблема в том что процессы компиляции асинхронны процессу моей программы, в результате команду на запуск компилятора я дал, но линкер часто хватается за недокомпиленые обектники, как результат ошибка. Нужно ждать пока отработают компиляторы, а потом кидать на линковку - я пока налобал такое, оно еще и работает, но как поступили господа белые.

    Psionic, 11 Декабря 2016

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

    −1

    1. 1
    http://pastebin.com/vnmmgjxG

    Я тут редактор двух цифр написал, зацените.

    Lyosha12, 11 Декабря 2016

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

    −2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    int n = 3;
    int X[3];
    
    void someFunc() {
    	for (int i = 0; i < n; ++i) {
    		if (i==0) X[i] = 1;
    		if (i==1) X[i] = 1;
    		if (i==2) X[i] = 1;
    	}
    }

    Без комментариев

    wd32, 10 Декабря 2016

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

    +3

    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
    // .h
    SParam **calibrationTable;
    
    // .cpp
    void MeasureWorker::initDefaultCalibrationTable()
    {
        calibrationTable = new SParam* [MAX_CHAN];
    
        for (int i = 0; i < MAX_CHAN; i ++) {
            calibrationTable[i] = new SParam [NP51];
            for (int j = 0; j < NP51; j ++) {
                SParam sParam;
                sParam.pha = 0;
                sParam.amp = 0;
                calibrationTable[i][j] = sParam;
            }
        }
    }

    Вот что мешало просто написать SParam calibrationTable[MAX_CHAN][NP51] {}; ума не приложу. И так все 250 кб кода. Тьма new, ни одного delete. Вывод? Не пускайте java кодера в с++

    Antervis, 05 Декабря 2016

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

    +2

    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
    #define m 100 
    #define Um -2. 
    #define UM 2.
    
    double razb(int l)
    {
    	double h;
    	double X[m];
    
    	h = (UM - Um) / (double(m) - 1.);
    
    	for (int i = 0; i < m; i++)
    		X[i] = Um + i*h;
    
    	return X[l];
    }

    tr_chayka, 28 Ноября 2016

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