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

    +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
    // HooksList.h
    #define PPCAT_NX(A, B) A ## B
    #define PPCAT(A, B) PPCAT_NX(A, B)
    
    #ifdef HOOKS_DEFS
        using namespace NtStructs;
        #define API_HOOK_DEF(module_name, hook_name, return_type, enabled, ...) \
            typedef return_type(WINAPI *PPCAT(hook_name, _ptr))(__VA_ARGS__); \
            return_type WINAPI PPCAT(hook_name, _hook)(__VA_ARGS__); \
            extern PPCAT(hook_name, _ptr) PPCAT(hook_name, _orig);
    #elif defined(HOOKS_LIST)
        #define API_HOOK_DEF(module_name, hook_name, return_type, enabled, ...) \
            {module_name, #hook_name, (LPVOID)PPCAT(hook_name, _hook), (LPVOID*)&PPCAT(hook_name, _orig), enabled},
    #elif defined(HOOKS_TYPES_DEF)
        using namespace NtStructs;
        #define API_HOOK_DEF(module_name, hook_name, return_type, enabled, ...) \
            typedef return_type(WINAPI *PPCAT(hook_name, _ptr))(__VA_ARGS__); \
            return_type WINAPI PPCAT(hook_name, _hook)(__VA_ARGS__);
    #elif defined(ORIGINAL_FUNCTIONS_TABLE_DEF)
        #define API_HOOK_DEF(module_name, hook_name, return_type, enabled, ...) \
            PPCAT(hook_name, _ptr) hook_name;
    #elif defined(ORIGINAL_FUNCTIONS_TABLE_FILL)
        #define API_HOOK_DEF(module_name, hook_name, return_type, enabled, ...) \
            (ORIGINAL_FUNCTIONS_TABLE_NAME).hook_name = PPCAT(hook_name, _orig);
    #else
        #define API_HOOK_DEF(...)
    #endif
    
    // NtCreateFile
    API_HOOK_DEF(L"ntdll", NtCreateFile, NTSTATUS, true,
                 PHANDLE            FileHandle,
                 ACCESS_MASK        DesiredAccess,
                 POBJECT_ATTRIBUTES ObjectAttributes,
                 PIO_STATUS_BLOCK   IoStatusBlock,
                 PLARGE_INTEGER     AllocationSize,
                 ULONG              FileAttributes,
                 ULONG              ShareAccess,
                 ULONG              CreateDisposition,
                 ULONG              CreateOptions,
                 PVOID              EaBuffer,
                 ULONG              EaLength)
    
    // NtDeleteFile
    API_HOOK_DEF(L"ntdll", NtDeleteFile, NTSTATUS, true,
                 POBJECT_ATTRIBUTES ObjectAttributes)
    // И так далее
    
    // В .cpp:
    static HookEntry hookEntries[] = {
    #define HOOKS_LIST
    #include "HooksList.h"
    #undef HOOKS_LIST
    };
    
    
    // ...
    static OriginalFunctions originalFuncsTable;
    #define ORIGINAL_FUNCTIONS_TABLE_FILL 1
    #define ORIGINAL_FUNCTIONS_TABLE_NAME originalFuncsTable
    #include "HooksList.h"
    #undef ORIGINAL_FUNCTIONS_TABLE_NAME
    #undef ORIGINAL_FUNCTIONS_TABLE_FILL

    Мокросы!..

    gost, 30 Ноября 2018

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

    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
    #include "pch.h"
    #include <iostream>
    using namespace std;
     
    void p(int a[], int &h )
    {
      int i = 0;
      int max = 0;
      int counter = 1;
      while (counter < h)
      {
        if (a[counter] > a[max])
        {
          max = counter;
        }
        counter = counter + 1;
      }
      int min = 0;
      int counter2 = 1;
      while (counter < h)
      {
        if (a[counter] < a[min])
        {
          min = counter;
        }
        counter = counter + 1;
      }
      int kol, kol2;
      if (max > min)
      {
        if (max != min)
        {
          kol = max - min - 1;
          i = min + 1;
          cout << "Kolichestvo elementov mezdu imin i imax: " << kol << endl;
        }
        else
        {
          cout << "Kolichestvo elementov mezdu imin i imax: 0" << endl;
        }
      }
      else
      {
        if (max != min)
        {
          kol2 = min - max - 1;
          i = max + 1;
          cout << "Kolichestvo elementov mezdu imin i imax: " << kol2 << endl;
        }
        else
        {
          cout << "Kolichestvo elementov mezdu imin i imax: 0" << endl;
        }
      }
      int sum = 0;
      while (i < max)
      {
        sum = sum + a[i];
        i++;
      }
      cout << "Summa elementov mezdu imin i imax: " << sum << endl;
    }
     
     
    int main()
    {
      int h;
      cout << "Vvedite razmer massiva: ";
      cin >> h;
      int *a = new int[h];
      for (int i = 0; i < h; i++)
        cin >> a[i];
      p(a, h);
      delete[] a;
      return 0;
    }

    Увековеченный Говнокод Нама, моего друга из Вьетнама (УГК)

    ugk, 26 Ноября 2018

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

    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
    #define rot(x,k) (((x)<<(k)) | ((x)>>(32-(k))))
    
    #define mix(a,b,c) \
    	    { \
    		a -= c;  a ^= rot(c, 4);  c += b; \
    		b -= a;  b ^= rot(a, 6);  a += c; \
    		c -= b;  c ^= rot(b, 8);  b += a; \
    		a -= c;  a ^= rot(c,16);  c += b; \
    		b -= a;  b ^= rot(a,19);  a += c; \
        	c -= b;  c ^= rot(b, 4);  b += a; \
    		}
    
    #define final(a,b,c) \
    		{ \
        	c ^= b; c -= rot(b,14); \
    		a ^= c; a -= rot(c,11); \
        	b ^= a; b -= rot(a,25); \
        	c ^= b; c -= rot(b,16); \
    		a ^= c; a -= rot(c,4);  \
    		b ^= a; b -= rot(a,14); \
    		c ^= b; c -= rot(b,24); \
    		}
    
    	unsigned int lookup3(const void *key, size_t length, unsigned int initval)
    	{
    		unsigned int  a, b, c;
    		const unsigned char  *k;
    		const unsigned int *data32Bit;
    
    		data32Bit = (unsigned int *)key;
    		a = b = c = 0xdeadbeef + (((unsigned int)length) << 2) + initval;
    
    		while (length > 12) {
    			a += *(data32Bit++);
    			b += *(data32Bit++);
    			c += *(data32Bit++);
    			mix(a, b, c);
    			length -= 12;
    		}
    
    		k = (const unsigned char *)data32Bit;
    		switch (length) {
    		case 12: c += ((unsigned int)k[11]) << 24;
    		case 11: c += ((unsigned int)k[10]) << 16;
    		case 10: c += ((unsigned int)k[9]) << 8;
    		case 9: c += k[8];
    		case 8: b += ((unsigned int)k[7]) << 24;
    		case 7: b += ((unsigned int)k[6]) << 16;
    		case 6: b += ((unsigned int)k[5]) << 8;
    		case 5: b += k[4];
    		case 4: a += ((unsigned int)k[3]) << 24;
    		case 3: a += ((unsigned int)k[2]) << 16;
    		case 2: a += ((unsigned int)k[1]) << 8;
    		case 1: a += k[0];
    			break;
    		case 0: return c;
    		}
    		final(a, b, c);
    		return c;
    	}

    Що это за хуйня и как ей пользоваться? Декларируется 3 раза в проекте

    gov_coder, 26 Ноября 2018

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

    −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
    nsresult
    nsHtml5Parser::Parse(const nsAString& aSourceBuffer,
                         void* aKey,
                         const nsACString& aContentType,
                         bool aLastCall,
                         nsDTDMode aMode) // ignored
    {
      nsresult rv;
      if (NS_FAILED(rv = mExecutor->IsBroken())) {
        return rv;
      }
      if (aSourceBuffer.Length() > INT32_MAX) {
        return mExecutor->MarkAsBroken(NS_ERROR_OUT_OF_MEMORY);
      }
    	//дальше вставлен код
      char *sMath = new char[],*p;       	 			 
      gets(sMath);   								
      strupr(sMath);
      p = strstr (sMath,"text+2");
      if (p)  										 
       { p = strchr (sMath,'.');
         if (p) 				
         strcat (sMath,"text+2");
       }   					
      delete [] sMath;

    Доброго времени всем.
    нашел код поиска и замены символов в строке. ставлю в исходник. компилятор пропускает , но в самом финале зависает насмерть. Уже вроде бы все:
    EXE header size: 62464 / 37888 bytes
    139:39.45 Install code: 169642 / 169638 bytes
    139:39.45 Install data: 173316 / 173324 bytes
    139:39.45 Uninstall code+data: 460087 / 460079 bytes
    139:39.45 CRC (0xB7F63C0E): 4 / 4 bytes
    139:39.45
    139:39.45 Total size: 865513 / 840933 bytes (102.9%)
    последняя строчка: 140:48.58 Packaging [email protected]:51.45 207 compiler warnings present.
    уже полдня висит, а финал не выдает:
    247:11.23 We know it took a while, but your build finally finished successfully!
    To view resource usage of the build, run |mach resource-usage|.
    To take your build for a test drive, run: |mach run|
    For more information on what to do now, see https://developer.mozilla.org/docs/Developer_Guide/So_You_Just_Built_Firefox

    DrAli, 23 Ноября 2018

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

    +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
    // https://habr.com/post/428846/
    // Работа со строками на этапе компиляции в современном C++
    
    // Определим статическую строку как массив символов, для удобства будем считать, что строка всегда оканчивается нулевым символом:
    
    template<size_t Size>
    using static_string = std::array<const char, Size>;
    
    constexpr static_string<6> hello = {'H', 'e', 'l', 'l', 'o', '\0'};
    
    constexpr auto hello = make_static_string("hello");
    
    // Здесь нам поможет одна из форм вариативного шаблона, которая позволяет развернуть
    // шаблонные аргументы как индексы для агрегатной инициализации нашей статической
    // строки из строкового литерала:
    
    template<size_t Size, size_t ... Indexes>
    constexpr static_string<sizeof ... (Indexes) + 1> make_static_string(const char (& str)[Size]) {
        return {str[Indexes] ..., '\0'};
    }
    
    constexpr auto hello = make_static_string<0, 1, 2, 3, 4>("hello"); // hello == "hello"
    
    // ...
    
    //Будем сравнивать строки посимвольно, пока не выявим различия, либо не достигнем конца хотя бы одной из строк.
    // Поскольку constexpr for еще не изобрели, воспользуемся рекурсией и тернарным оператором:
    
    template<size_t Size1, size_t Size2>
    constexpr int static_string_compare(
        const static_string<Size1>& str1, 
        const static_string<Size2>& str2,
        int index = 0) {
            return index >= Size1 && index >= Size2 ? 0 :
                index >= Size1 ? -1 :
                    index >= Size2 ? 1 :
                        str1[index] > str2[index] ? 1 :
                            str1[index] < str2[index] ? -1 :
                                static_string_compare(str1, str2, index + 1);
    }

    Ммм, какой БАГОР
    Крестобляди опять накостылили какой-то параши на шаблонах и радуются

    j123123, 20 Ноября 2018

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

    −1

    1. 1
    2. 2
    3. 3
    class Govno {
            virtual void govno() = 0;
    };

    Откуда такой дурацкий синтаксис? ))
    Прочитал у страуса, джва дня смеюсь.

    Может кто-то знает причину?

    vistefan, 19 Ноября 2018

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

    +2

    1. 1
    2. 2
    https://youtu.be/A4Gu0lfIKU0
    Нужно ли программисту изучать C++?

    Какое только дерьмо не найдешь на ютубе.

    C++ это кривая и дерьмовая высокоуровневая говнонадстройка над Си.
    Начинать с C++ точно не стоит, потому что в итоге получаются какие-то говнокодеры, не умеющие ничего делать без трижды обдристанной плюсовой стдлибы и всяких там классов с шаблонами и эксепшенами. Лучше уж начинать с Си, потом немного потыкать в лисп с его макросами, а потом посмотреть на плюсовые темплейты и констэкспры, тогда-то дерьмовейщая суть говноплюсов будет ясна.
    Что касается ООП в C++, то это просто сраное дерьмо. Понапридумывали каких-то паблик-приват-протектед наследований. Еще эта питушня с множественным наследованием и vtable, отсутствие метаклассов (RTTI - говно), отсутствие нормальных механизмов метапрограммирования (только какое-то кривое и убогое говно), отсутствие интроспекции, тьюринг-полные темплейты, не совпадающие с самим C++. Сраное парашное нагромождение разнообразной хуйни. Никакого базиса и ничего фундаментального в этому куске дерьма нет.

    j123123, 05 Ноября 2018

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

    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
    // my __enable_if
    template < typename T >
    struct __Conflict {};
    
    template <bool B, class T = void>
    struct __enable_if { typedef __Conflict<T> type; };
    
    template <class T>
    struct __enable_if<true, T> { typedef T type; };
    
    // Example of usage:
    template <typename T>
    class Lazy
    {
    public:
        void _ctor(bool b);
        void _ctor(typename __enable_if<!std::is_same<T, bool>::value, T>::type);
    };
    
    template <typename T>
    void Lazy<T>::_ctor(bool b)
    {
        std::cout << "bool " << b << std::endl;
    };
    
    template <typename T>
    void Lazy<T>::_ctor(typename __enable_if<!std::is_same<T, bool>::value, T>::type t)
    {
        std::cout << "T " << t << std::endl;
    };
    
    int main(int argc, char **argv)
    {
        Lazy<int> i;
        i._ctor(10);
        i._ctor(true);
    
        Lazy<bool> b;
        b._ctor(true);
    
        return 0;
    }

    Наговнокодил свой собственный "enable_if" который круче стандартного и дает возможность писать класный говнокод

    ASD_77, 29 Октября 2018

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

    0

    1. 1
    2. 2
    3. 3
    https://github.com/GSC-fake/Cossacks-back-to-war/blob/master/BackToWar_135/addon_2_project/ADDON_2_PROJECT/ADDON_PROJECT_130
    
    Исходный код казаков. Трезвым лучше не читать. Я вас предупредил.

    a1batross, 29 Октября 2018

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

    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
    /*
    https://habr.com/post/246009/
    
    Это вторая статья в цикле «Теория категорий для программистов».
    
    ...
    
    Я хотел бы сказать вам, что есть шаблон в стандартной библиотеке С++,
    который принимает две функции и возвращает их композицию, но такого
    нет.
    
    Примечание переводчика: но такой не сложно написать на С++14 (я опускаю
    тонны деталей владения и шаблонной магии для проверок, что эти функции
    и тип аргумента действительно можно компоновать):
    */
    
    template <typename T>
    struct function_arg: public function_arg<decltype(&T::operator())> {};
    
    template<typename ReturnType, typename Arg>
    struct function_arg<ReturnType(Arg) const> {
    	using type = Arg;
    };
    
    template<typename ClassType, typename ReturnType, typename Arg>
    struct function_arg<ReturnType(ClassType::*)(Arg) const> {
    	using type = Arg;
    };
    
    template<typename T>
    using function_arg_t = typename function_arg<T>::type;
    
    template<typename F, typename G>
    auto compose(F&& f, G&& g) {
    	return [f = std::forward<F>(f), g = std::forward<G>(g)]
    		(function_arg_t<F>&& a) {return g(f(std::forward<function_arg_t<F>>(a)));};
    }

    Поэтому я за C++

    j123123, 22 Октября 2018

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