- 1
- 2
(cell)data += sizeof(cell) - 1;
(cell)data &= ~(sizeof(cell) - 1);
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
(cell)data += sizeof(cell) - 1;
(cell)data &= ~(sizeof(cell) - 1);
Блядь, ёбаный tcc! Другие конпилеры отказываются такое конпилить. Теперь дохуя переписывать.
Почему только tcc умеет lvalue какастить? Но это говно какое-то. В таком случае пельменная же зашкварится, и конпилятор не поместит её в регистр?
reinterpret_cast –— примитивщина, оно просто игнорирует тип. А вот static_cast –— самая сложная фигня. В случае чисел оно даже производит вычисления (когда нужно целого питуха приводить к плавающему или наоборот).
Когда у тебя «много некрасивой писанины», ты фактически выполняешь за компилятор сложную работу. Они решили упростить компилятор.
Если бы такое было позволено, Кармаку не пришлось бы городить каламбуры из указателей для вычисления быстрого отвратного порня.
> Они решили упростить компилятор.
Ну блядь, конпиляторы ссей и крестов давно уже не простые, сколько в гцц всякого говна понапихали: expression statement, вложенные дисфункции, трамплины, typeof, автовывод типов, генерики из c11, куча атрибутов для функций и переменных, проверка всяких возможных ошипок и очепяток, допустимых в языке, но с выдачей ворнингов, ебанические оптимизации. А про кресты я вообще молчу. Не говори мне, что люди сделавшие всё это, хотят упростить компилятор. Что во что тут преобразовывать? Например tcc такое не позволяет, он позволяет кастить в lvalue только различные инты и указатели. А я считаю, что тут было бы уместно просто проверить sizeof(int) и sizeof(float) на равенство, и насрать на тип инт и позволить сохранить в нём плавающего петуха.
f = (float)i; // rvalue кастует как число
(float)i = f; // а lvalue - как биты
Хуйня какая-то неконсистентная получается. Поэтому нинужно.
Подтверждаю.
>> вот в крестах та все сложнее
Ага:
https://en.cppreference.com/w/cpp/language/value%20category
Напридумывали glvalue, prvalue, xvalue. Как теперь во всём этом разобраться?
http://phpsadness.com/
то у чево есть имя
Не обязательно. lvalue —– это аргумент операторов инкремента или левый агрумент операторов присваивания, это то, чему можно присвоить значение. Например ((char*)0x265)[i] может быть lvalue, но при этом не имеет имени.
> вот в крестах та все сложнее
Вот на кресты та мне похуй.
Можно и без имени:
> лвалуе всегда вычисляется в некий адрес памяти или регистра
Да, именно тка.
rvalue –— откуда, lvalue –— куда.
rvalue может быть частью длинной формулы. Где оно хранится, нас не интересует.
А вот lvalue –— кокококонечное место назначения.
Я ничего не напутал?
так вот в си выражение "abcdef" тоже lvalue
потому что не всё lvalue, что модифицируемое, но всё модифицируемое - lvalue
Ну, блядь, а я именно о кастах lvalue тут пижжу, тогда твоя хуйня вообще тут не к месту, в касте lvalue static_cast не имеет смысла.
В сях все касты reinterpret, за исключением кастов между плавучими и фиксированными петухами.
Расширение и сужение как раз только у плавучих и фиксированных петухов.
И его уже 4 месяца не видно :'(. И судя по тому, что он пропал одновременно с KitKat'ом я догадываюсь кто это был.
Ко-кок
Надо конпелятор переконпелять да выкроссконпелять.
Где-то читал, что старые переводчики юзали логлан или что-то типа того.
Гуглтранслейт переводит «Rote Platz» с немецкого на русский как «красный квадрат», потому что переводит через английский (в английском «square» означает и площадь, и квадрат).
А потом на Гитхабе встречаешь проекты, которые без Буста в директории «C:\Program Files\boost\boost_1_55_0» не собираются.
Тулза не без косяков, да и библиотек не очень много поддерживает, зато очень просто и не надо прописывать в настройках проекта все эти ебанутые директории с хедерами, директории с либами, сами либы… И упаси Гейтс при прописывании перепутать «pituh_lib-vc140-mtd.lib» с «pituh_lib-vc140-mdd.lib»!
Это прыщеговно?
Меньше 8. Хотя тут даже в древний 6-символьный конвеншн уложились...
В 'J', кстати, некоторые билиботечные фнукции названы нормально, а некоторые похожи на Имена хтонических чудовисчь: cderx, dbctx, fssrplc, rplc. Хт грнчн н длн мн 255.
Мнн птм з 'Джй'.
Кстати, какие-то оси на роутерах понимали команды по перв букв есл не был совп.
А ещё в винде комментарии в «bat-файлах» отделяются словом «rem», какой багор )))
Зато парсер простой, не надо специальный кейс под комменты городить.
В "Tcl" тоже не надо, но его, тем не менее сделали, а можно было просто: И # можно было сделать командой, всё равно она должна быть в начале строки.
Кстати, можно объявить команду и переменную с именем "#", но команду напрямую использовать не получится :(, только так:
https://ideone.com/HTw1Wx
Но можно всё обернуть в фигурные скобки и будет норм, можно даже многострочный коментарий сделать:
Англ. вореант: Conpile conpiler with conpiler.