1. Си / Говнокод #4423

    +135

    1. 1
    2. 2
    3. 3
    do {
                     data = get_stat();
            } while ((data & (1 << stat_smth_ok_bit_n)) != (1 << stat_smth_ok_bit_n));

    Суровый педантичный немецкий код.

    minixoid, 22 Октября 2010

    Комментарии (25)
  2. Си / Говнокод #4415

    +145

    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
    enum {
    	CONST_A,
    	CONST_B,
    	CONST_C,
    	/* ... и еще пяток в том же духе */
    };
    
    /* ... */
    
    char opType = ...;
    switch(opType) {
    case 'A':
    	/* строчек 10 кода использующие CONST_A */
    	break;
    case 'B':
    	/* капипасто тех же строчек 10 кода - но теперь с CONST_B */
    	break;
    case 'C':
    	/* капипасто тех же строчек 10 кода - но с CONST_C */
    	break;
    /* и т.д. и т.п. для других значений opType */
    }

    только что убил полчаса что бы понять что switch/case завален 100% копиями того же самого кода - только со смененной константой. просто замапить тот char в enum ... это наверное исключительно для слишком умных.

    Dummy00001, 22 Октября 2010

    Комментарии (3)
  3. Си / Говнокод #4340

    +144

    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
    void addSlash( const char* command, char* sdo )
    {
    	int command_length;
    	char *command_line = command;
    	command_length = strlen(command);
    	
    	while(command_length>0){
    		switch(*command_line){
    		   case '"':
    		           strcpy(sdo+strlen(sdo),"\\");
    		   default:
    		           strcpy(sdo+strlen(sdo), command_line);
    		}
    		command_line++;
    		command_length--;
    	}
    }

    Должно быть добавление слешей перед двойными кавычками.

    absolut, 11 Октября 2010

    Комментарии (8)
  4. Си / Говнокод #4318

    +113

    1. 1
    char anarch[sizeof(long double) * sizeof(long)];

    Задали одному студенту (5 курса, между прочим) написать программу для решения анаграмм...
    Перед вами фрагмент кода, где объявляется буфер для хранения слова.
    На вопрос "Зачем ты так написал?" ответ был: "Хотел избавиться от дефайнов и магических чисел".
    На вопрос о размере буфера ответ был: "Так ведь не бывает слов длиннее 40 букв".

    TarTar, 09 Октября 2010

    Комментарии (16)
  5. Си / Говнокод #4264

    +98

    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
    //
    // Замена блоков __try/__finally нашей реализацией. Примеры использования:
    // NTSTATUS SomeFunc() {
    //     X *p = NULL;
    //     NTSTATUS status = STATUS_SUCCESS;
    //     Try {
    //         p = new(NonPagedPool) X;
    //         if (!p) Leave(status = STATUS_INSUFFICIENT_RESOURCES);
    //
    //         status = SomeKernelFunc();
    //         LeaveNS(status = STATUS_UNSUCCESSFUL);
    //     } Finally {
    //         if (p) delete p;
    //     }
    //     return status;
    // }
    //
    #define Try if (1)
    #define Finally try_exit: NOTHING
    #define Leave(s) { s; goto try_exit; }
    #define LeaveNS(s) {if (!NT_SUCCESS(status)) Leave(s);}
    #define Run(s) {status = s; LeaveNS(;);}

    Суровые исключения для Win32 драйвера

    rat4, 16 Сентября 2010

    Комментарии (7)
  6. Си / Говнокод #4253

    +144

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    switch (n)
    {
        case k:
            some_action;
        case k - 1:
            some_action;
        ...
        case 2:
            some_action;
        case 1:
            some_action;
    }

    - когда может быть удобно использование switch без break'ов?
    - например, когда хотите повторить операцию сколько-то раз

    nagato, 14 Сентября 2010

    Комментарии (7)
  7. Си / Говнокод #4236

    +127

    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
    UINT32 GetHostName(char *hostName, UINT32 hostNameBufSize)
    {
            if (hostName == NULL ){
                    OSALTRACE(OSAL_ERROR, ("Error: Input parameter hostName(null)."));
                    return -1;
            }
    
            FILE *fp = NULL;
            static char buffer[512];
            char tag[64];
    
            // hope this size will be OK for one line to read from the fileOB
            char line[1000];
            char *linep=line;
    
            int buffSize = sizeof(buffer);
    
            int found = 0;
    
    
            fp = fopen("/etc/resolv.conf", "r");
    
            if ( fp == NULL)
            {
    
                    OSALTRACE(OSAL_ERROR, ("failed to open resolver config file."));
                    return -1;
            }
    
            while ( ((*linep=getc(fp)) != EOF) && !found )
            {
                    if (*linep++ == '\n')
                    {
                            *linep = '\0';
                            sscanf(line, "%s %s", tag, buffer);
                            if (tag[0] && (!strcmp(tag, "search") || !strcmp(tag, "domain") ) ) {
                                    found = 1;
                                    break;
                            }
                            linep = line;
                    }
            }
    
            fclose(fp);
    
            if ( found )
            {
                    strcpy(hostName,buffer);
                    OSALTRACE(OSAL_DEBUG, ("DHCP domain is  %s.", buffer));
            }
            else
            {
                    OSALTRACE(OSAL_ERROR, ("Could not find dhcp domain in resolv.conf."));
                    return -1;
            }
    
            return !found;
    }

    Intel WiMAX Network Service, не какая-то пионерская поделка...

    raorn, 13 Сентября 2010

    Комментарии (60)
  8. Си / Говнокод #4235

    +144

    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
    if ( found )
            {
                    strcpy(hostName,buffer);
                    OSALTRACE(OSAL_DEBUG, ("DHCP domain is  %s.", buffer));
            }
            else
            {
                    OSALTRACE(OSAL_ERROR, ("Could not find dhcp domain in resolv.conf."));
                    return -1;
            }
    
            return !found;
    }

    Intel WiMAX Network Service, не какая-то пионерская поделка...

    raorn, 13 Сентября 2010

    Комментарии (1)
  9. Си / Говнокод #4210

    +129

    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
    #include <iostream>
    #include <windows.h>
    #include <pthread.h>
     
    void * func_MyThread(void * args)
    {
     
    int S=0; //
     
       int i;
     
       int j;
     
    int k;
     
    pthread_t MyThread;
     
    pthread_create(&MyThread,NULL,func_MyThread,NULL); 
     
    for (i=1; i <=8; i++)//
     
    pthread_join(MyThread,NULL);
     
    {
     
        S +=i+1; //
    }
     
       pthread_create(&MyThread,NULL,func_MyThread,NULL); 
     
     for (j=4; j <=12; j++)//
     
    pthread_join(MyThread,NULL);
     
    {
     
    S+=j; //
     
    }
     
    pthread_create(&MyThread,NULL,func_MyThread,NULL);
     
    for (k=5; k<=20; k++)
     
    pthread_join(MyThread,NULL);
     
    {
     
        S += k*(2*k-1); 
    }
     
    {
     
    std::cout <<"S= \t" <<S; //
     
    return 0;// 
    }

    студент решал задачу по распределенному программированию.
    все очень серьезно.

    niXman, 09 Сентября 2010

    Комментарии (41)
  10. Си / Говнокод #4190

    +128

    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
    int zerocheck(float a,float b,float c,int d){
    	if(a==0){
    		if(b==0){
    			if(c==0)return 0;
    			else return 1;
    		}else{
    			if(d==1){
    				y_1=c/b;
    				return 2;
    			}else{
    				y2=c/b;
    				return 2;
    			}
    		}
    	}else{
    		if(b==0){
    			if(d==1){
    				x1=c/a;
    				return 3;
    			}else{
    				x2=c/a;
    				return 3;
    			}
    		}else{
    			return 4;
    		}
    	}
    }
    
    int main() {
    	float a,b,c,d,e,f;
    	int ch1,ch2;
    .....
    	ch1=zerocheck(a,b,c,1);
    	ch2=zerocheck(d,e,f,2);
    	if(ch1==1)printf("\nNo answer. 0*X + 0*Y = %f",c);
    	if(ch2==1)printf("\nNo answer. 0*X + 0*Y = %f",f);
    	if(ch1==0 && ch2==0)printf("\nAny variable is answer!");
    	if(ch1==0 && ch2==2)printf("\nX - any. Y = %f",y2);
    	if(ch1==0 && ch2==3)printf("\nX = %f. Y - any",x2);
    	if(ch1==0 && ch2==4)printf("\n%f*X + %f*Y = %f",d,e,f);
    	if(ch1==2 && ch2==0)printf("\nX - any. Y = %f",y_1);
    	if(ch1==2 && ch2==2){
    		if(y_1==y2)printf("\nX - any. Y = %f",y_1);
    		else printf("\nY1 (%f) != Y2 (%f)",y_1,y2);
    	}
    	if(ch1==2 && ch2==3)printf("\nX = %f. Y = %f",x2,y_1);
    	if(ch1==2 && ch2==4){
    		y2=y_1;
    		x2=(f-e*y2)/d;
    		printf("\nX = %f. Y = %f",x2,y_1);
    	}
    	if(ch1==3 && ch2==0)printf("\nX = %f. Y - any",x1);
    	if(ch1==3 && ch2==2)printf("\nX = %f. Y = %f",x1,y2);
    	if(ch1==3 && ch2==3){
    		if(x1==x2)printf("\nX = %f. Y - any",x1);
    		else printf("\nX1 (%f) != X2 (%f)",x1,x2);
    	}
    	if(ch1==3 && ch2==4){
    		x2=x1;
    		y2=(f-d*x2)/e;
    		printf("\nX = %f. Y = %f",x1,y2);
    	}
    	if(ch1==4 && ch2==0)printf("\n%f*X + %f*Y = %f",a,b,c);
    	if(ch1==4 && ch2==2){
    		y_1=y2;
    		x1=(c-b*y_1)/a;
    		printf("\nX = %f. Y = %f",x1,y2);
    	}
    	if(ch1==4 && ch2==3){
    		x1=x2;
    		y_1=(c-a*x1)/b;
    		printf("\nX = %f. Y = %f",x2,y_1);
    	}
    	if(ch1==4 && ch2==4){
    		if(a/b==d/e)printf("\nNo answer. Lines would be parallel or qeual.");
    		else{
    			x1=(b*f-c*e)/(d*b-a*e);
    			y_1=(c-a*x1)/b;
    			printf("\nX = %f. Y = %f",x1,y_1);
    		}
    	}
    	printf("\n");
    	print_lines();
    	return 0;
    }

    Hello, C!

    Second_Fry, 07 Сентября 2010

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