- 1
Оффтоп словаря терминов говнокода.
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+2
Оффтоп словаря терминов говнокода.
Для всего, что хотели ответить на комментарий из http://govnokod.ru/26478.
Поддержим чистоту расы словаря!
0
Тестовый код для тестирования парсера.
Не обращайте внимания.
int i = 5;
i += ++i + ++i;
def f():
try:
f()
finally:
f()
f()
mov bp, 0cf8h
lea esi, IOForEEPROM-@7[esi]
mov edi, 8000384ch
mov dx, 0cfeh
cli
call esi
mov di, 0058h
dec edx ; and al,0fh
mov word ptr (BooleanCalculateCode-@10)[esi], 0f24h
call esi
lea ebx, EnableEEPROMToWrite-@10[esi]
mov eax, 0e5555h
mov ecx, 0e2aaah
call ebx
mov byte ptr [eax], 60h
push ecx
loop $
+1
#include <cstdio>
class tag;
template<class>
struct type { friend constexpr auto get(type); };
template<class TKey, class TValue>
struct set { friend constexpr auto get(TKey) { return TValue{}; } };
void foo() { // never called
if constexpr(false) { // never true
if (false) { // never true
constexpr auto call = [](auto value) { std::printf("called %d", value); };
void(set<type<tag>, decltype(call)>{});
}
}
}
int main() {
get(type<tag>{})(42); // prints called 42
}
https://twitter.com/krisjusiak/status/1186363017329594368
Какой C++20 )))
0
#include <stdio.h>
struct Gost {
int x = 42;
};
int main () {
Gost gst;
printf("%d\n", gst); // 42
}
http://ideone.com/fB26cs
Уб ли это?
+2
// https://habr.com/ru/post/466985/
// о каррировании в крестоговне
// По сути это каррирующее говно просто складывает куда-то хуйню, а потом целиком ее в функцию призывает.
// Ну т.е. на Си можно написать дрисню вида
int shit(int a, int b, int c, int d)
{
return a*(b+c*d);
}
// И вот каррирование такой дрисни это как если б я сделал структуру
struct shit_arguments
{
int a;
int b;
int c;
int d;
};
// И потом бы с конца заполнял это говно
struct shit_arguments;
shit_arguments.d = 13;
shit_arguments.c = 666;
shit_arguments.b = 1488;
shit_arguments.a = 42;
// и при полном заполнении этого говна просто б вызвал функцию
// подставив туда накопившееся говно
int somecrap = shit(shit_arguments.a, shit_arguments.b, shit_arguments.c, shit_arguments.d);
// именно так эта крестовая дрисня и работает, она не может произвести частичное вычисление
// не может сделать функцию с частично вычисленной дрисней в ней на основе частично переданной хуйни
// если я например в функцию shit захочу частично подставить аргументы b,c,d как 1,2,3 то у меня не получится функции вида
int shit_b1_c2_d3(int a)
{
return a*(7); // 1+2*3 = 7
}
// Нихуя подобного не будет. А если нихуя подобного нет, нахуй это бесполезное дерьмо вообще надо?
// В крестах никак нельзя на основе каких-то готовых функций сгенерить
// видоизмененные функции с частично сделанными вычислениями
// Никакой нормальной рефлексии нет, просто какие-то тупые кривые костыли к сишечке налепили
// И это программисты?
+2
public static void Init()
{
LetterOrder = new Dictionary<char, int>
{
{'A', 0},
{'B', 1},
{'C', 2},
{'D', 3},
{'E', 4},
{'F', 5},
{'G', 6},
{'H', 7},
{'I', 8},
{'J', 9},
{'K', 10},
{'L', 11},
{'M', 12},
{'N', 13},
{'O', 14},
{'P', 15},
{'Q', 16},
{'R', 17},
{'S', 18},
{'T', 19},
{'U', 20},
{'V', 21},
{'W', 22},
{'X', 23},
{'Y', 24},
{'Z', 25},
};
}
C#-макака не умеющая, ни в char - 'A' ни в статические конструторы (и еще много чего: см. https://www.codingame.com/training/easy/encryptiondecryption-of-enigma-machine/solution?id=10246815)
+3
bool Object::DeleteDouble(void* data)
{
Element* rc = Head;
BANKCLIENT* asd = (BANKCLIENT*)rc->Data;
int dbl;
Element* rc1 = Head;
BANKCLIENT* asd1 = (BANKCLIENT*)rc1->Data;
while ((rc != NULL) && (rc->Data != data))
{
asd = (BANKCLIENT*)rc->Data;
dbl = asd->NumScore;
while ((rc1 != NULL) && (rc1->Data != data))
{
asd1 = (BANKCLIENT*)rc1->Data;
if (dbl == asd1->NumScore)
{
std::cout << "Дублирующийся элемент удалён" << std::endl;
Delete(rc1);
goto flag;
}
}
}
flag:
system("pause");
return rc;
}
Некая svetlana.kotik раскрывает секреты односвязных списков.
+5
public enum Status : byte
{
Disabled = 0,
Enabled
}
Мопед не мой, прислала боевая подруга из Канады, реальный проект за недетские деньги.
Лаконичности була не хватило, лучше свой енум сделать, чем писать bool IsEnabled.
KISS.
+1
template < typename CType >
void list < CType >::sorted_push(CType val, long int key)
{
if (head) {
// Создаём контейнер и помещаем в него полученное значение
container < CType > *new_cont;
container < CType > *tmp = head;
new_cont = new container < CType >;
new_cont->set_key(key);
new_cont->set_cargo(val);
while ((tmp != tail) && (key > (tmp->get_key())))
tmp = tmp->get_next();
if ((tmp == tail) && (key > (tmp->get_key()))) { // Если выполнились одновременно два условия в цикле
new_cont->set_next(tmp->get_next()); // Вставляем в самый конец
new_cont->set_past(tmp);
tmp->set_next(new_cont);
tail = new_cont;
} else {
new_cont->set_next(tmp);
new_cont->set_past(tmp->get_past());
if ((tmp->get_past()) != NULL)
tmp->get_past()->set_next(new_cont);
if (tmp == head)
head = new_cont;
tmp->set_past(new_cont);
}
if (empty) {
empty = false;
tail = head;
}
} else {
container < CType > *new_cont;
new_cont = new container < CType >;
new_cont->set_key(key);
new_cont->set_cargo(val);
new_cont->set_next(head);
tail = head = new_cont;
empty = false;
}
}
template < typename CType > CType queue < CType >::pop()
{
container < CType > *tmp = list<CType>::head;
if (tmp == NULL) {
std::cerr <<
"Стек пуст! Стек возвращает мусор! ";
list<CType>::empty = true;
} else {
CType tmpval = list<CType>::head->get_cargo();
// Переходим к следующему элементу
list<CType>::head = list<CType>::head->get_next();
if (list<CType>::head == NULL)
list<CType>::empty = true;
delete tmp;
return tmpval;
}
}
template < typename CType > CType stack < CType >::pop()
{
container < CType > *tmp = list<CType>::tail;
if (tmp == NULL) {
std::cerr <<
"Очередь пуста! Возвращается мусор! ";
list<CType>::empty = true;
} else {
CType tmpval = list<CType>::tail->get_cargo();
// Переходим к предыдущему элементу
if (list<CType>::tail != list<CType>::head)
list<CType>::tail = list<CType>::tail->get_past();
else
list<CType>::empty = true;
delete tmp;
return tmpval;
}
}
пострелял себе в ногу
+2
Давайте устроим холиворчик - скриптинг на винде против скриптинга на линупсе, или баш против помершелла