- 1
https://imgur.com/a/IgqXRK7
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+1
https://imgur.com/a/IgqXRK7
0
class TcpClient
{
public:
//...
enum ErrCode{
REZ_OK = 0,
REZ_ERR,
REZ_NO_NEW_DATA,
REZ_NEW_DATA
};
//...
};
...
class UdpPort
{
public:
//...
enum ErrCode{
REZ_OK = 0,
REZ_ERR,
REZ_NO_NEW_DATA,
REZ_NEW_DATA
};
//...
};
//...
// Потом в коде:
ErrCode rez = (rtcPort_.setupPort(portSettings) == WrapperSystemSockets::UdpPort::ErrCode::REZ_OK) ? ErrCode::REZ_OK : ErrCode::REZ_ERR;
Enum головного мозга.
+13
union pony {
double celestia = 0.;
short luna; // padded
};
atomic<pony> princesses = ATOMIC_VAR_INIT({});
bool party(pony desired) {
pony expected;
return princesses.compare_exchange_strong(expected, desired);
}
Эти дебилы из комитета вконец поехали.
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0528r3.html
+1
// 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
Мокросы!..
0
#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;
}
Увековеченный Говнокод Нама, моего друга из Вьетнама (УГК)
0
#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 раза в проекте
−1
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
+1
// 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);
}
Ммм, какой БАГОР
Крестобляди опять накостылили какой-то параши на шаблонах и радуются
−1
class Govno {
virtual void govno() = 0;
};
Откуда такой дурацкий синтаксис? ))
Прочитал у страуса, джва дня смеюсь.
Может кто-то знает причину?
+3
https://youtu.be/A4Gu0lfIKU0
Нужно ли программисту изучать C++?
Какое только дерьмо не найдешь на ютубе.
C++ это кривая и дерьмовая высокоуровневая говнонадстройка над Си.
Начинать с C++ точно не стоит, потому что в итоге получаются какие-то говнокодеры, не умеющие ничего делать без трижды обдристанной плюсовой стдлибы и всяких там классов с шаблонами и эксепшенами. Лучше уж начинать с Си, потом немного потыкать в лисп с его макросами, а потом посмотреть на плюсовые темплейты и констэкспры, тогда-то дерьмовейщая суть говноплюсов будет ясна.
Что касается ООП в C++, то это просто сраное дерьмо. Понапридумывали каких-то паблик-приват-протектед наследований. Еще эта питушня с множественным наследованием и vtable, отсутствие метаклассов (RTTI - говно), отсутствие нормальных механизмов метапрограммирования (только какое-то кривое и убогое говно), отсутствие интроспекции, тьюринг-полные темплейты, не совпадающие с самим C++. Сраное парашное нагромождение разнообразной хуйни. Никакого базиса и ничего фундаментального в этому куске дерьма нет.