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

    Всего: 2

  2. Си / Говнокод #24697

    −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
    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
    //+-------------------------------------------------------------------------
    //
    //  Function:   GetNumberOfType
    //              SetNumberOfType
    //
    //  Synopsis:   Helpers to get/set an integer value of given variant type
    //              by dereferencing a pointer
    //
    //              pv - pointer to dereference
    //              vt - variant type
    //
    //--------------------------------------------------------------------------
    
    // BUGBUG: The VC 5 compiler flags this as an error because VT_BOOL4 is not
    // a valid VARENUM value.  Disable the warning for now.
    #pragma warning(disable:4063)       // case '254' is not a valid value for switch of enum 'VARENUM'
    
    long
    GetNumberOfType (void * pv, VARENUM vt)
    {
        switch(vt)
        {
            case VT_I2:
            case VT_BOOL:
                return * (SHORT*) pv;
    
            case VT_I4:
            case VT_BOOL4:
                return * (LONG*) pv;
    
            default:
                Assert(FALSE);
                return 0;
        }
    }
    
    void
    SetNumberOfType (void * pv, VARENUM vt, long l)
    {
        switch(vt)
        {
            case VT_BOOL:
                l = l ? VB_TRUE : VB_FALSE;
                //  vvvvvvvvvvv  FALL THROUGH vvvvvvvvvvvvv
    
            case VT_I2:
                Assert(l >= SHRT_MIN && l <= SHRT_MAX);
                * (SHORT*) pv = SHORT(l);
                break;
    
            case VT_BOOL4:
                l = l ? VB_TRUE : VB_FALSE;
                //  vvvvvvvvvvv  FALL THROUGH vvvvvvvvvvvvv
    
            case VT_I4:
                * (LONG_UNALIGNED *) pv = l;
                break;
    
            default:
                Assert(FALSE);
        }
    }

    Опять какая-то сранина известно откуда.

    CCAHA9I_CPAHIHA, 31 Августа 2018

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

    +4

    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
    DWORD NEAR _fastcall RgbCompare(RGBQUAD rgb1, RGBQUAD rgb2)
    {
        DWORD sum=0;
    
        //
        //  lets do some majic shit so the compiler generates "good" code.
        //
    #define SUMSQ(a,b)                          \
        if (a > b)                              \
            sum += (WORD)(a-b) * (WORD)(a-b);   \
        else                                    \
            sum += (WORD)(b-a) * (WORD)(b-a);
    
        SUMSQ(rgb1.rgbRed,   rgb2.rgbRed);
        SUMSQ(rgb1.rgbGreen, rgb2.rgbGreen);
        SUMSQ(rgb1.rgbBlue,  rgb2.rgbBlue);
    
        return sum;
    }

    Как сложно, оказывается, посчитать (a-b)² на Си. Нужно каждый раз писать макрос для этой операции...

    CCAHA9I_CPAHIHA, 30 Августа 2018

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