Кресты / Говнокод #28858 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
  98. 98
  99. 99
  100. 100
void text::draw()
{
	CmdWinGUI::draw();
	COORD temp = startCo;		//Разный мусор
	COORD tempEnd = startCo;
	int16_t _al = 0;
	int16_t _an = 0;
	int16_t remain = 0;
	uint8_t a = 0;
	bool fullRow = 1;	//Флаги, не изменять
	bool alignPrepare = 0;
	if (tableLine)
	{
		temp.Y = temp.Y + lineShift + sepShift;
	}
	if (!tableFormat)
	{
		if (alignSetting == ALIGN_C)
		{
			_al = sizeCo.X/2;
			for (uint8_t a = 0;a < 0xFF;++a)	//Измеряем длину текстового поля
			{
				if (textBuffer[a] == NULL)
					break;
				++remain;
			}
			temp.X=startCo.X+ _al-remain/2;	//Корректируем курсор в соответствии с расчётами
			if (temp.X < startCo.X)			//Если предыдущие вычисления дали ошибку - выход за предел рамки слева
				temp.X = startCo.X;			//Корректируем
		}
		for (;;)
		{
			SetConsoleCursorPosition(hCon, temp);
			if (textBuffer[a] == NULL)
				break;
			printf("%c", textBuffer[a]);
			++temp.X;
			++a;
			if (temp.X == startCo.X + sizeCo.X - 1) //Проверяем достигло ли рамки, иначе обрываем цикл
				break;
		}
		return;
	}
	for (uint8_t b = 0;b<=filledRows;++b)
	{
		if (!fullRow)
		{
			temp.X = tempEnd.X;
		}
		tempEnd.X += tableRowSize[b] - 1;
		if (alignSetting == ALIGN_C)
		{
			--temp.X;
			//Предварительные расчеты смещения
			if (!alignPrepare)
			{
				for (SHORT a = temp.X;a < 0xFF;++a)
				{
					if (a == tempEnd.X) //Проверяем достигло ли рамки, иначе обрываем цикл
					{
						--_an;
						break;		//половина длины поля таблицы
					}
					++_an;
				}
				for (uint8_t a = 0;a < 0xFF;++a)
				{
					if (tableText[b][a] == NULL)
					{
						_al = a;	//половина длины слова
						break;
					}
				}
				alignPrepare = 1;	//Подымаем флаг готовности
			}
			//Коррекция положения курсора в соответствии с результатами блока предварительных расчётов
			temp.X += abs(_an / 2) - abs(_al / 2);
			_an = 0;
		}for (;;){
			SetConsoleCursorPosition(hCon, temp);	//Ставим курсор в начало/середину/конец поля
			if (tableText[b][a] == NULL)
			{
				fullRow = 0;	//При окончании поля текста до заполнения поля снимаем флаг заполнения поля
				break;
			}
			++temp.X;
			if (temp.X == tempEnd.X) //Проверяем достигло ли рамки, иначе обрываем цикл
			{
				fullRow = 1;	//При окончании поля в таблице до завершения поля текста прекращаем вывод и выходим из цикла
				break;
			}
			printf("%c", tableText[b][a]);
			++a;
		}
		a = 0;
		alignPrepare = 0;	//Сбрасываем флаг для следующей итерации
	}
	if (isChanged)
		this->editFlagSwitch();
}

Рендер текста с учётом коллизии слева и справа

siclown siclown, (Updated )

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

Кресты / Говнокод #28857 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
#include "Windows.h"
void line::draw()
{
	CmdWinGUI::draw();
	uint8_t modB = 0; //modeByte
	COORD tempSt = lineStart;
	COORD tempEn = lineEnd;
	SHORT dX = abs(lineEnd.X - lineStart.X);
	SHORT dY = abs(lineEnd.Y - lineStart.Y);
	SHORT sX = lineStart.X < lineEnd.X ? 1 : -1;
	SHORT sY = lineStart.Y < lineEnd.Y ? 1 : -1;
	SHORT dErr = dX - dY;
	SHORT dErr2 = 0;
	if (scan)
	{
		SetConsoleCursorPosition(hCon, lineStart);
		for (uint8_t a = 0;a <= lineEnd.X-lineStart.X;++a)
		{
			modB = lineAtrBuffer[a];
			SetConsoleTextAttribute(hCon, modB);
			printf("%c", lineSymBuffer[a]);
		}
		if (isChanged)
			this->editFlagSwitch();
		return;
	}
	for (;;)
	{
		SetConsoleCursorPosition(hCon, tempSt);
		printf("%c", lineSym);
		if (tempSt.X == tempEn.X&&tempSt.Y == tempEn.Y)
			break;
		dErr2 = dErr * 2;
		if (dErr2 > -dY)
		{
			dErr -= dY;
			tempSt.X += sX;
		}
		if (dErr2 < dX)
		{
			dErr += dX;
			tempSt.Y += sY;
		}
	}
	if (isChanged)
		this->editFlagSwitch();
}

Отрисовка произвольной графической линии в консоли

siclown siclown, (Updated )

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

Кресты / Говнокод #28841 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
auto objs = it.get_objects();

            switch(objs.size())
            {
                case 1:     sent = _out_stream.send_message(objs[0]);
                            break;
                case 2:     sent = _out_stream.send_message(objs[0], objs[1]);
                            break;
                case 3:     sent = _out_stream.send_message(objs[0], objs[1], objs[2]);
                            break;
                case 4:     sent = _out_stream.send_message(objs[0], objs[1], objs[2], objs[3]);
                            break;
                case 5:     sent = _out_stream.send_message(objs[0], objs[1], objs[2], objs[3], objs[4]);
                            break;
                case 6:     sent = _out_stream.send_message(objs[0], objs[1], objs[2], objs[3], objs[4], objs[5]);
                            break;
                case 7:     sent = _out_stream.send_message(objs[0], objs[1], objs[2], objs[3], objs[4], objs[5],
                                                            objs[6]);
                            break;
                case 8:     sent = _out_stream.send_message(objs[0], objs[1], objs[2], objs[3], objs[4], objs[5],
                                                            objs[6], objs[7]);
                            break;
                case 9:     sent = _out_stream.send_message(objs[0], objs[1], objs[2], objs[3], objs[4], objs[5],
                                                            objs[6], objs[7], objs[8]);
                            break;
                case 10:    sent = _out_stream.send_message(objs[0], objs[1], objs[2], objs[3], objs[4], objs[5],
                                                            objs[6], objs[7], objs[8], objs[9]);
                            break;
                case 11:    sent = _out_stream.send_message(objs[0], objs[1], objs[2], objs[3], objs[4], objs[5],
                                                            objs[6], objs[7], objs[8], objs[9], objs[10]);
                            break;
                case 12:    sent = _out_stream.send_message(objs[0], objs[1], objs[2], objs[3], objs[4], objs[5],
                                                            objs[6], objs[7], objs[8], objs[9], objs[10], objs[11]);
                            break;
                case 13:    sent = _out_stream.send_message(objs[0], objs[1], objs[2], objs[3], objs[4], objs[5],
                                                            objs[6], objs[7], objs[8], objs[9], objs[10], objs[11],
                                                            objs[12]);
                            break;
                case 14:    sent = _out_stream.send_message(objs[0], objs[1], objs[2], objs[3], objs[4], objs[5],
                                                            objs[6], objs[7], objs[8], objs[9], objs[10], objs[11],
                                                            objs[12], objs[13]);
                            break;
                case 15:    sent = _out_stream.send_message(objs[0], objs[1], objs[2], objs[3], objs[4], objs[5],
                                                            objs[6], objs[7], objs[8], objs[9], objs[10], objs[11],
                                                            objs[12], objs[13], objs[14]);
                            break;
                case 16:    sent = _out_stream.send_message(objs[0], objs[1], objs[2], objs[3], objs[4], objs[5],
                                                            objs[6], objs[7], objs[8], objs[9], objs[10], objs[11],
                                                            objs[12], objs[13], objs[14], objs[15]);
                            break;
                case 17:    sent = _out_stream.send_message(objs[0], objs[1], objs[2], objs[3], objs[4], objs[5],
                                                            objs[6], objs[7], objs[8], objs[9], objs[10], objs[11],
                                                            objs[12], objs[13], objs[14], objs[15], objs[16]);
                            break;
                case 18:    sent = _out_stream.send_message(objs[0], objs[1], objs[2], objs[3], objs[4], objs[5],
                                                            objs[6], objs[7], objs[8], objs[9], objs[10], objs[11],
                                                            objs[12], objs[13], objs[14], objs[15], objs[16], objs[17]);
                            break;
                case 19:    sent = _out_stream.send_message(objs[0], objs[1], objs[2], objs[3], objs[4], objs[5],
                                                            objs[6], objs[7], objs[8], objs[9], objs[10], objs[11],
                                                            objs[12], objs[13], objs[14], objs[15], objs[16], objs[17],
                                                            objs[18]);
                            break;
                case 20:    sent = _out_stream.send_message(objs[0], objs[1], objs[2], objs[3], objs[4], objs[5],
                                                            objs[6], objs[7], objs[8], objs[9], objs[10], objs[11],
                                                            objs[12], objs[13], objs[14], objs[15], objs[16], objs[17],
                                                            objs[18], objs[19]);
                            break;
                default:
                    fprintf(stderr, "error: Too much attached objects (%lu), talk to developer\n", objs.size());
                    return false;
            }

            if (!sent)
            {
                fprintf(stderr, "error: Unable to send message to output pipe\n");
                return false;
            }

Меня заставили это сделать, потому что по задумке число вложенных объектов известно на этапе разработки, а у меня - нет.

YpaHeLI_ YpaHeLI_, (Updated )

Комментарии (32, +32)

Кресты / Говнокод #28838 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
const uint8_t DexFile::kDexMagic[] = { 'd', 'e', 'x', '\n' };
const uint8_t DexFile::kDexMagicVersions[DexFile::kNumDexVersions][DexFile::kDexVersionLen] = {
  {'0', '3', '5', '\0'},
  // Dex version 036 skipped because of an old dalvik bug on some versions of android where dex
  // files with that version number would erroneously be accepted and run.
  {'0', '3', '7', '\0'}
};

Отсюдова:
https://android.googlesource.com/platform/art/+/refs/heads/nougat-release/runtime/dex_file.cc

ropuJIJIa ropuJIJIa, (Updated )

Комментарии (2, +2)

Кресты / Говнокод #28797 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
// Всем привет. Я тоже принёс говнокода, но в необычном формате.
// А именно, я написал мини-книгу "60 антипаттернов для С++ программиста".
// https://pvs-studio.ru/ru/blog/posts/cpp/1053/

Там вы найдёте и реальный C++ говнокод и просто вредные советы в духе "Пишите код так, как будто его будет читать председатель жюри IOCCC и он знает, где вы живёте (чтоб приехать и вручить вам приз)".

Если сразу не понятно почему "совет" вреден, то там есть соответствующий разбор.

Готов подискутировать про написанное. Ну и приглашаю накидывать в комментариях аналогичные советы.

P.S. Предупреждаю: там много букв. Сразу запасайтесь кофе/энергетиком. Или попкорном :)

Andrey_Karpov Andrey_Karpov, (Updated )

Комментарии (57, +57)

Кресты / Говнокод #28789 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
/*
GNOT General Public License!
(c) 1995-2011 Microsoft Corporation
*/
 
#include "dos.h"
#include "win95.h"
#include "win98.h"
#include "sco_unix.h"
#include "metro.h" //windows 8
 
class Windows8 extends WindowsSeven implements Nothing {
    
    int totalNewFeatures = 6; //task manager, ribbon, new bsod =D, new WAT, metro, linux_block
    int totalWorkingFeatures = 1; //bsod
    float bugCount = 345889E+09;
    bool readyForRelease = FALSE;
    
    void main() {
        while (!CRASHED) {
            if (first_time_install) {
                if (installedRAM < 2GB || processorSpeed < 4GHz || videoCard < 1) { //requires video card
                    MessageBox("Hardware incompatibility error.");
                    GetKeyPress();
                    //BSOD();
                    BSOD2(); //windows 8
                }
            }
            Make10GBswapfile();
            SearchAndDestroy(FIREFOX|OPENOFFICEORG|ANYTHING_GOOGLE|LINUX_PARTITION|GRUB); //new features (linux & grub)
            AddRandomDriver();
            MessageBox("Driver incompatibility error.";
            GetKeyPress();
            //BSOD();
            BSDO2(); //windows 8
        }
    
        //printf("Welcome to Windows 2000");
        //printf("Welcome to Windows XP");
        //printf("Welcome to Windows Vista");
        //printf("Welcome to Windows 7");
        printf("Welcome to Windows 8"); //8 : official name?
        
        goto check_license;
        
        goto start_metro; //windows 8 exclusive!! remove it on future versions
        
        start_metro:
            StartMetroUI();
            if (WindowsStartMenuClick == 1)
            {
                goto start_metro;
            }
            else
            {
                if (TryingToRemoveMetroUsingRegedit == 1)
                {
                    goto start_metro;
                }
            }
            
        if (still_not_crashed) {
            //CheckUserLicense();
            //DoubleCheckUserLicense();
            //TripleCheckUserLicense();
            goto check_license;
            
            check_license:
#ifdef NEED_LICENSE    //DO_NOT_REMOVE, ALWAYS NEED A LICENSE
#include "string.h"
#endif 
                if (strlen(LicenseInput) < 10 || CheckOEMLicense(LicenseInput) < 1)
                {
                    MessageBox("License is already in use or invalid.");
                    GetKeyPress();
                    //BSOD();
                    BSOD2(); //windows 8
                }
                else
                {
                    goto start_metro;
                }
            
            RelayUserDeatilsToRedmond();
            DisplayFancyGraphics();
            FlickerLED(hard_drive);
            //SetTheme(WindowsVista);
            SetTheme(WindowsSeven);
            RunWindowsSeven();
        }
    }
    
    return LotsMoreMoney;
}

iliya5digital iliya5digital, (Updated )

Комментарии (13, +13)

Кресты / Говнокод #28780 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
// Решает задачу из огэ по информатике
// Первое число - количество
// затем числа идут
// выводит наибольшее число которое оканчивается на 3

#include <vector>
#include <stdio.h>
typedef unsigned char zero;
typedef unsigned int cat;
cat rex = 0;

class orange
{
public:
    cat *bananas = nullptr;
    std::vector<zero> apples;

    void a()
    {
        for (zero *ufo = apples.data(); ufo - apples.data() < apples.size();)
        {
            switch (*ufo++)
            {
                case 1: if (!bananas) bananas = new cat[*(cat *)ufo]; ufo += sizeof(int); break;
                case 7: delete[] bananas; bananas = nullptr; break;
                case 4: bananas[*(cat *)ufo] = bananas[*(cat *)(ufo + sizeof(int))]; ufo += 2 * sizeof(int); break;
                case 0: bananas[*(cat *)ufo] = *(cat *)(ufo + sizeof(int)); ufo += 2 * sizeof(int); break;
                case 8: bananas[*(cat *)ufo] = bananas[*(cat *)(ufo + sizeof(int)) + bananas[*(cat *)(ufo + sizeof(int) * 2)]]; ufo += 3 * sizeof(int); break;
                case 9: printf("%d\n", bananas[*(cat *)ufo]); ufo += sizeof(int); break;
                case 2: rex = bananas[*(cat *)ufo]; ufo += sizeof(int); break;
                case 6: scanf("%ud", bananas + *(cat *)ufo); ufo += sizeof(int); break;
                case 3:
                {
                    if (bananas[*(cat *)ufo] > bananas[*(cat *)(ufo + sizeof(int))]) bananas[*(cat *)ufo] = bananas[*(cat *)ufo];
                    else bananas[*(cat *)ufo] = bananas[*(cat *)ufo + *(cat *)(ufo + sizeof(int))]; ufo += 2 * sizeof(int); break;
                }
                case 5: bananas[*(cat *)ufo] = bananas[*(cat *)ufo] % bananas[*(cat *)(ufo + sizeof(int))]; ufo += 2 * sizeof(int); break;

            }
        }
        apples.clear();
    }
    void a(zero melon)
    {
        apples.push_back(melon);
    }
};
int main()
{
    orange *limon = new orange;
    cat timings[] =
    {
        1, 16, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
        0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 
        0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 0, 0, 0
    };
    cat peoples[] = { 1, 1, 0, 0, 0, 6, 0, 0, 0, 0, 2, 0, 0, 0, 0, 7 };
    int backups[] = { 9, 0, 0, 0, 0 };
    cat buldogs[] =
    {
        6, 2, 0, 0, 0, 4, 3, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 2, 0, 0, 0, 4, 7, 0, 0, 0, 2, 0, 0, 0, 5, 2, 0, 0, 0, 1, 0, 0, 0,
        8, 2, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0,
    };
    for (cat fruit = 0; fruit < 0xE + 0b10; ++fruit) {limon->a(peoples[fruit]);} limon->a();
    for (cat juicegrinding = 0; juicegrinding < 33 + 0x50; juicegrinding++){limon->a(timings[juicegrinding]);}

    for (cat fish = 0; fish < rex; fish += (100 ^ 0x64 + 0b11) - 0x2)
    {
        for (cat limons = 0; limons < 2 * 2 * 2 * 2 * 2 + 0b100000 - 1; ++limons){limon->a(buldogs[limons]);}
    }
    for (cat apples = 0; apples < 0x16 - 0b10000 - 1; apples++){limon->a(backups[apples]);} limon->a(); delete limon;
}

Чувак, позволь мне рассказать, я как волшебник C++, разворачивающий свои кодовые заклинания, словно колдун в цифровом мире. У меня этот язык в кармане, братан, словно дирижер, ведущий симфонию из единиц и нулей. Но не думай, что я буду тут прямо о своей крутости говорить, ой нет, я предпочитаю позволить моему коду говорить за меня.

Когда я погружаюсь в C++, это словно нырок в бесконечный океан возможностей. Я танцую с указателями, жонглирую ссылками и скачу на волнах управления памятью, словно настоящий мастер. Это дикая гонка, мой друг, но именно от этой адреналиновой суеты я получаю настоящий кайф.

Но знаешь, что по-настоящему круто? Сила абстракции, парень. Я обожаю создавать эти модульные, многоразовые блоки кода, называемые классами. Они как маленькие вселенные функциональности, которые я могу вызывать в любой момент. А шаблоны, о, братишка, шаблоны — это как швейцарские ножи C++. Они позволяют мне раскрыть всю мощь вычислений на этапе компиляции, словно безумный ученый, готовящий самые потрясающие зелья.

А теперь сделаем небольшой отступление. Вообрази, чувак, я вгружен в кодовые окопы, сражаясь с багами и отлавливая неэффективности. Это как бесконечный квест, борьба со временем и сложностью. Но, эй, у меня есть мой надежный напарник — стандартная библиотека C++. Она — мой арсенал контейнеров, алгоритмов и вспомогательных функций. С её помощью я могу нарезать и перемешивать данные, словно настоящий шеф-повар в цифровой кухне.

И не забывай про производительность, парень. Я стараюсь выжать каждую каплю мощи из своего кода. Я ныряю в низкоуровневые операции, знакомлюсь с железом. Вставки ассемблера — моё тайное оружие, способ связи с самим железом. Оптимизирую регистры, высвобождаю кэш и расширяю границы того, что возможно.

zxc254363 zxc254363, (Updated )

Комментарии (1, +1)

Кресты / Говнокод #28647 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
void
AuxFunc::homePath(std::string *filename)
{
  char *fnm = getenv("USERPROFILE");
  if(fnm)
    {
      *filename = std::string(getenv("USERPROFILE"));
    }
  else
    {
      fnm = getenv("HOMEDRIVE");
      if(fnm)
    {
      *filename = std::string(getenv("HOMEDRIVE"));
    }
      else
    {
      fnm = getenv("HOMEPATH");
      if(fnm)
        {
          *filename = std::string(getenv("HOMEPATH"));
        }
      else
        {
          fnm = getenv("HOME");
          if(fnm)
        {
          *filename = std::string(getenv("HOME"));
        }
          else
        {
          fnm = getenv("SystemDrive");
          if(fnm)
            {
              *filename = std::string(getenv("SystemDrive"));
            }
          else
            {
              std::cerr << "Cannot find user home folder" << std::endl;
              exit(1);
            }
        }
        }
    }
    }
  toutf8(*filename);
}

Угадайте откуда код!

JloJle4Ka JloJle4Ka, (Updated )

Комментарии (1438, +1438)