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

    +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
    #include <iostream>
    using namespace std;
    struct GetFirst{};
    template<class T>
    const T &operator,(const T &val, const GetFirst &) {
      return val;
    }
    template<class T, class U>
    const T &ifvoid_impl(const T &val, const U &) {
      return val;
    }
    template<class T>
    const T &ifvoid_impl(const GetFirst &, const T &val) {
      return val;
    }
    #define ifvoid(X, Y) (ifvoid_impl(((X), GetFirst()), (Y)))
    
    int a() { return 1; }
    void f() {}
    
    int main() {
      cout << ifvoid(a(), "[a()]") << endl
           << ifvoid(f(), "[f()]") << endl;
    }

    Лень проверять в шаблонном коде, возвращает ли что-то пользовательская функция? Воспользуйся волшебством оператора запятая!

    Bobik, 16 Февраля 2017

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

    +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
    // CPP/Windows/Defs.h
    
    #ifndef __WINDOWS_DEFS_H
    #define __WINDOWS_DEFS_H
    
    #include "../Common/MyWindows.h"
    
    #ifdef _WIN32
    inline bool LRESULTToBool(LRESULT v)
    { return (v != FALSE); }
    
    inline bool BOOLToBool(BOOL v)
    { return (v != FALSE); }
    
    inline BOOL BoolToBOOL(bool v)
    { return (v ? TRUE: FALSE); }
    #endif
    
    inline VARIANT_BOOL BoolToVARIANT_BOOL(bool v)
    { return (v ? VARIANT_TRUE: VARIANT_FALSE); }
    
    inline bool VARIANT_BOOLToBool(VARIANT_BOOL v)
    { return (v != VARIANT_FALSE); }
    
    #endif

    Скопипастино из исходников 7zip (прости, Игорь Павлов).
    Этот код выглядит, как ебаный пиздец.

    Graviton, 15 Февраля 2017

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

    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
    template <typename T> std::list<T*> GetComponents(){
            std::list<T*> list;
            std::list<Component_ptr>::iterator iter=_components.begin();
            while(iter!=_components.end()){
                T* element=dynamic_cast<T*>(iter->get());
                if(element!=NULL){
                    list.push_back(element);
                }
                iter++;
            }
            return list;
        }
    
        template <typename T> T* GetComponent(){
            std::list<T*> list=GetComponents<T>();
            if(list.size()>0){
                return list.front();
            }
            return NULL;
        }

    Зато как круто выглядит -
    AnyComponent *component = GetComponent<AnyComponent>();
    А теперь его как в старой доброй сишке на NULL проверить?

    Pythoner, 11 Февраля 2017

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

    +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
    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
    #include "hello.h"
    
    __static_data<System_Reflection_RuntimeModule> GModuleC__runtimemodule_hello_ehpqe23j_dll = { (Byte*) -1, (Byte*) -1, { { { (Void**) &System_Reflection_RuntimeModule_vtable_impl } },  0 , &GModuleC__runtimeassembly_hello_ehpqe23j_dll.data, {  0  }, {  0  }, {  0  }, {  0  } }};
    __static_data<System_Reflection_RuntimeAssembly> GModuleC__runtimeassembly_hello_ehpqe23j_dll = { (Byte*) -1, (Byte*) -1, { { { (Void**) &System_Reflection_RuntimeAssembly_vtable_impl } },  0 ,  0 , {  0  } }};
    Int32 GModuleC__cctor_called_hello_ehpqe23j_dll = -1;
    static __static_str<6> _s15063797403154689540_ = { (Byte*) -1, (Byte*) -1, (Void**) &System_String_vtable_impl, 5, L"pituh" };
    static __static_str<2> _s1054744840757602046_ = { (Byte*) -1, (Byte*) -1, (Void**) &System_String_vtable_impl, 0, L"\0" };
    __static_data<System_RuntimeType> pituh__runtimetype_hello_ehpqe23j_dll = { (Byte*) -1, (Byte*) -1, { { { { { (Void**) &System_RuntimeType_vtable_impl } } } },  0 , {  0  }, {  0  }, 0, (System_Type*) &System_Object__runtimetype.data,  0 , ((System_String*) ((Byte**) &_s15063797403154689540_ + 2)), ((System_String*) ((Byte**) &_s1054744840757602046_ + 2)), 18, 0, 0, 0, 0, &GModuleC__runtimemodule_hello_ehpqe23j_dll.data }};
    Int32 pituh__cctor_called_hello_ehpqe23j_dll = -1;
    Void Void_pituh__ctorFN_hello_ehpqe23j_dll(pituh* __this) {
        __check_this((Void*)__this);
        Void_System_Object__ctorFN((System_Object*) (__this));
        return ;
    }
    static __static_str<8> _s18790481933210356248_ = { (Byte*) -1, (Byte*) -1, (Void**) &System_String_vtable_impl, 7, L"Kokoko!" };
    
    Int32 Int32_pituh_MainFSystem_StringAYN_hello_ehpqe23j_dll(System_StringAY* args) {
        Void_System_Console_WriteLineFSystem_StringN(((System_String*) ((Byte**) &_s18790481933210356248_ + 2)));
        return 0;
    }
    pituh* pituh_pituh__newFN_hello_ehpqe23j_dll() {
        Int32 local0;
        Int32 _dup20;
        Int32 _dup22;
        Void* _dup42;
        Void* _dup51;
        Void* _dup56;
        Int32 _dup75;
        pituh* _dup104;
        _dup20 = ((sizeof(pituh) + sizeof(System_Object*)) + sizeof(System_Object*));
        ;
        local0 = _dup20;
    a22:
        _dup22 = _dup20;
        ;
        if ((UInt32)_dup22 >= (UInt32)102400) goto a37;
        Void* _phi30;
        Void* __expr30;
        __expr30 = GC_MALLOC_ATOMIC(_dup22);
        _phi30 = __expr30;
        goto a42;
    a37:
        Void* __expr37;
        __expr37 = GC_MALLOC_ATOMIC_IGNORE_OFF_PAGE(_dup22);
        _phi30 = __expr37;
    a42:
        _dup42 = _phi30;
        ;
        if (_dup42) goto a51;
        System_OutOfMemoryException* _new45;
        _new45 = System_OutOfMemoryException_System_OutOfMemoryException__newFN();
        Void_System_OutOfMemoryException__ctorFN(_new45);
        throw (Void*) _new45;
    a51:
        _dup51 = _dup42;
        ;
        Memset((Byte*) ((Byte*) (_dup51)), 0, (local0));
        _dup56 = _dup51;
        ;
        *((Int32*) (Int32*) (_dup56)) = -1;
        _dup75 = (Int32) (((Byte*) (_dup56) + sizeof(pituh*)));
        ;
        *((Int32*) (Int32*) (_dup75)) = -1;
        _dup104 = (pituh*) ((Void*) ((_dup75 + sizeof(pituh*))));
        ;
        Void_pituh__initFN_hello_ehpqe23j_dll(_dup104);
        return _dup104;
    }
    Void Void_pituh__initFN_hello_ehpqe23j_dll(pituh* __this) {
        __check_this((Void*)__this);
        ((System_Object*) (__this))->__vtbl = (Void**) &pituh_vtable_implhello_ehpqe23j_dll;
        return ;
    }
    Int32 Int32_pituh__getsizeFN_hello_ehpqe23j_dll(pituh* __this) {
        __check_this((Void*)__this);
        return (Int32) (sizeof(pituh));
    }
    System_Type* System_Type_pituh__gettypeFN_hello_ehpqe23j_dll(pituh* __this) {
        __check_this((Void*)__this);
        return (System_Type*) ((System_Type*) &pituh__runtimetype_hello_ehpqe23j_dll.data);
    }
    Void* VoidP_pituh__dynifaceFSystem_TypeN_hello_ehpqe23j_dll(pituh* __this, System_Type* _type) {
        __check_this((Void*)__this);
        return 0/*null*/;
    }
    Int32 Int32_pituh_get_static__cctor_calledFN_hello_ehpqe23j_dll() {
        return pituh__cctor_called_hello_ehpqe23j_dll;
    }
    Int32* Int32P_pituh_get_static_addr__cctor_calledFN_hello_ehpqe23j_dll() {
        return &pituh__cctor_called_hello_ehpqe23j_dll;
    }
    Void Void_pituh_set_static__cctor_calledFInt32N_hello_ehpqe23j_dll(Int32 _value) {
        pituh__cctor_called_hello_ehpqe23j_dll = _value;
        return ;
    }
    // Дальше копипастить нет смысла

    В эту простыню превращается простенькая программа на C# после прогона через IL2C:

    using System;

    class pituh {
    public static int Main (string [] args)
    {
    Console.WriteLine ("Kokoko!");
    return 0;
    }
    }


    IL2C брать отсюда: https://csnative.codeplex.com/

    inkanus-gray, 11 Февраля 2017

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

    −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
    // MegaProject.h
    #ifndef _MegaProject_
    #define _MegaProject_
    
    class MegaProject {
        // Here will be some features
    public:
        // It needs an implementation
    };
    
    #endif
    
    // MegaProject.cpp
    #include "MegaProject.h"
    
    // Please wait until it will be implemented itself

    Graviton, 10 Февраля 2017

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

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    try {
                    shadow_page.insert_record(index, record);
                } catch ( ... ) {
                    throw;
                }

    Koshak90, 07 Февраля 2017

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

    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
    cout << "testBinary([-128..127]) = {" << flush;
        const char bin_data[256]
            = {-128, -127, -126, -125, -124, -123, -122, -121, -120, -119, -118, -117, -116, -115, -114,
               -113, -112, -111, -110, -109, -108, -107, -106, -105, -104, -103, -102, -101, -100, -99,
               -98,  -97,  -96,  -95,  -94,  -93,  -92,  -91,  -90,  -89,  -88,  -87,  -86,  -85,  -84,
               -83,  -82,  -81,  -80,  -79,  -78,  -77,  -76,  -75,  -74,  -73,  -72,  -71,  -70,  -69,
               -68,  -67,  -66,  -65,  -64,  -63,  -62,  -61,  -60,  -59,  -58,  -57,  -56,  -55,  -54,
               -53,  -52,  -51,  -50,  -49,  -48,  -47,  -46,  -45,  -44,  -43,  -42,  -41,  -40,  -39,
               -38,  -37,  -36,  -35,  -34,  -33,  -32,  -31,  -30,  -29,  -28,  -27,  -26,  -25,  -24,
               -23,  -22,  -21,  -20,  -19,  -18,  -17,  -16,  -15,  -14,  -13,  -12,  -11,  -10,  -9,
               -8,   -7,   -6,   -5,   -4,   -3,   -2,   -1,   0,    1,    2,    3,    4,    5,    6,
               7,    8,    9,    10,   11,   12,   13,   14,   15,   16,   17,   18,   19,   20,   21,
               22,   23,   24,   25,   26,   27,   28,   29,   30,   31,   32,   33,   34,   35,   36,
               37,   38,   39,   40,   41,   42,   43,   44,   45,   46,   47,   48,   49,   50,   51,
               52,   53,   54,   55,   56,   57,   58,   59,   60,   61,   62,   63,   64,   65,   66,
               67,   68,   69,   70,   71,   72,   73,   74,   75,   76,   77,   78,   79,   80,   81,
               82,   83,   84,   85,   86,   87,   88,   89,   90,   91,   92,   93,   94,   95,   96,
               97,   98,   99,   100,  101,  102,  103,  104,  105,  106,  107,  108,  109,  110,  111,
               112,  113,  114,  115,  116,  117,  118,  119,  120,  121,  122,  123,  124,  125,  126,
               127};

    Shantykoff, 05 Февраля 2017

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

    +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
    {
    try
        {
        throw;
        }
    catch(
    E & e )
        {
        return &e;
        }
    catch(
    ...)
        {
        return 0;
        }
    }

    https://github.com/boostorg/exception/blob/develop/include/boost/exception/current_exception_cast.hpp

    huesto, 05 Февраля 2017

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

    +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
    inline Short_t TMath::Min(Short_t a, Short_t b)
       { return a <= b ? a : b; }
    
    inline UShort_t TMath::Min(UShort_t a, UShort_t b)
       { return a <= b ? a : b; }
    
    inline Int_t TMath::Min(Int_t a, Int_t b)
       { return a <= b ? a : b; }
    
    inline UInt_t TMath::Min(UInt_t a, UInt_t b)
       { return a <= b ? a : b; }
    
    inline Long_t TMath::Min(Long_t a, Long_t b)
       { return a <= b ? a : b; }
    
    inline ULong_t TMath::Min(ULong_t a, ULong_t b)
       { return a <= b ? a : b; }
    
    inline Long64_t TMath::Min(Long64_t a, Long64_t b)
       { return a <= b ? a : b; }
    
    inline ULong64_t TMath::Min(ULong64_t a, ULong64_t b)
       { return a <= b ? a : b; }
    
    inline Float_t TMath::Min(Float_t a, Float_t b)
       { return a <= b ? a : b; }
    
    inline Double_t TMath::Min(Double_t a, Double_t b)
       { return a <= b ? a : b; }

    Поясните плз в чем тут прикол. Почему бы не использовать темплейты?
    код из cern/root

    haib, 04 Февраля 2017

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

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    if (setrlimit(RLIMIT_NOFILE, &rl) < 0) {
    err = "sshttp::init::setrlimit:";
    err = strerror(errno);
    return -1;
    }

    https://github.com/stealth/sshttp/blob/master/sshttp.cc
    Хоть я и нашёл эту ошибку, завести его в lxc так и не удалось. Первое соединение зависает, а остальные выдают connection reset by peer
    Ищутся другие способы выжить с одним ssh портом

    mittorn, 03 Февраля 2017

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