
Andrey
05.11.2016
01:17:37
а если ты написал, а через 2 года сам же делаешь хотфикс с критикал багой, то это плохой код

Sergey
05.11.2016
01:17:41
по твоему лучше клубок ифов нафигачить?
чем имитировать исключеня через лонгджамп?

Vladislav
05.11.2016
01:18:33

Google

Sergey
05.11.2016
01:18:44
да, должны

Andrey
05.11.2016
01:19:08

Sergey
05.11.2016
01:19:10
но многие не считают себя страдающими
одного поля ягода

Andrey
05.11.2016
01:20:07
не одного. goto переходит по области видимости

ovf
05.11.2016
01:20:37
ну с исключениями примерно как с автоматическим управлением памятью по-моему. либо ты знаешь, какие функции у тебя могут вернуть ошибку и какие ресурсы тебе при этом надо освободить, либо пиши на жабе

Andrey
05.11.2016
01:20:44
а лонг дажмп это вообще такая ебень, что можно не просто себе в ногу выстрелить, а взорвать всех рядом

Sergey
05.11.2016
01:21:44
волка боятся - в лес не ходить

ovf
05.11.2016
01:21:58
(и да, продуманные макросы позволяют писать аккуратный и красивый код на тему проверки результатов функций и освобождения ресурсов)

Vladislav
05.11.2016
01:22:11

Sergey
05.11.2016
01:22:19
+++
Продуманные макросы говоришь? Вототлаживать то такие продуманные макросы и не удобно

Andrey
05.11.2016
01:23:48
да кто же боится

Google

Sergey
05.11.2016
01:24:10
Ну а так то да, теже волки и лес

Andrey
05.11.2016
01:24:15
я о том, что любое стрельба из базуки должна быть оправданна
вот я бы на вас посмотрел, когда нужно модуль-либу отлаживать, а там джампы

ovf
05.11.2016
01:25:30
а зачем отлаживать макросы? в них баги?
тогда это не очень продуманные макросы

Andrey
05.11.2016
01:25:45
а причём тут вообще макросы?

ovf
05.11.2016
01:26:01
ну ты зачем-то жалуешься на отладку макросо
*макросов. что бы это ни значило

Andrey
05.11.2016
01:26:27
про отладку макросов я не говорил ни слова

ovf
05.11.2016
01:26:55
извини, это не ты, а сергей

Vladislav
05.11.2016
01:28:07
ADDRESS alloc(nbytes)
POS nbytes;
{
REG POS rbytes = round(nbytes+BYTESPERWORD,BYTESPERWORD);
LOOP INT c=0;
REG BLKPTR p = blokp;
REG BLKPTR q;
REP IF !busy(p)
THEN WHILE !busy(q = p->word) DO p->word = q->word OD
IF ADR(q)-ADR(p) >= rbytes
THEN blokp = BLK(ADR(p)+rbytes);
IF q > blokp
THEN blokp->word = p->word;
FI
p->word=BLK(Rcheat(blokp)|BUSY);
return(ADR(p+1));
FI
FI
q = p; p = BLK(Rcheat(p->word)&~BUSY);
PER p>q ORF (c++)==0 DONE
addblok(rbytes);
POOL
}
кусок кода sh. Они знают толк в продуманных макросах)

ovf
05.11.2016
01:28:42
да, борн был большой фанат алгола

Andrey
05.11.2016
01:29:01
вот например давно уже думаю — зачем люди плодят макросы, когда в большинстве случаев можно вызвать inline функцию

Vladislav
05.11.2016
01:29:23

Andrey
05.11.2016
01:29:47

Vladislav
05.11.2016
01:30:09

ovf
05.11.2016
01:30:11
например, нельзя, когда я на макросе изображаю свой control flow
или вообще всё что угодно, кроме тупого выражения

Andrey
05.11.2016
01:32:09

Google

Sergey
05.11.2016
01:32:20
иногда в макросе генерят код или даже не генерят, а пихают в параметр макроса, а там он где-то подставляется внутри макроса и разворачивается в кусок функции, функцию или объект.

Vladislav
05.11.2016
01:32:27

Sergey
05.11.2016
01:32:30
пришло время отлаживать макросы
макросы сами не отладятся

Andrey
05.11.2016
01:34:47
ну, ок. Но ведь есть же libmath. Хотя, да, не всегда есть возможность притащить в проект

Sergey
05.11.2016
01:35:22
Владислав, _Generic тебе в помошь

Vladislav
05.11.2016
01:35:32
у макроса для min, впрочем, свои неустранимые проблемы

Andrey
05.11.2016
01:35:38
но у вас тоже достаточно синтетический кейс

Sergey
05.11.2016
01:35:40
макрос там будет тонкой прослойкой

Andrey
05.11.2016
01:36:04
я вот постоянно вижу более тривиальное использование

Vladislav
05.11.2016
01:36:50

Sergey
05.11.2016
01:36:51
вообще странно не смотря на то что у нас схх тред а не сpp - сишники не врываются и не защищают свой сишный мир

Sergey
05.11.2016
01:36:59
1

ovf
05.11.2016
01:37:06
а зачем _generic для min?

Vladislav
05.11.2016
01:37:13

Andrey
05.11.2016
01:37:25

ovf
05.11.2016
01:37:31
а от кого его защищать? :-)
ему что-то угрожает?

Vladislav
05.11.2016
01:37:43

Andrey
05.11.2016
01:37:48
голактеко опасносте

Google

Sergey
05.11.2016
01:37:59
вообще да, большинство сионистов считают, что все крестовики вынуждены страдать
я не смог доказать ни одному сишнику, что на самом деле страдают сионисты, а не крестушки

Vladislav
05.11.2016
01:38:41

Sergey
05.11.2016
01:39:09
ладно, одному смог

ovf
05.11.2016
01:39:18
_generic это и есть вручную

Andrey
05.11.2016
01:39:37
ок, давайте я ещё наброшу

ovf
05.11.2016
01:39:55
а автоматически -- это без _generic

Sergey
05.11.2016
01:39:57
min, minf, mini,minl
да, доставай вентилятор

Admin
ERROR: S client not available

Andrey
05.11.2016
01:40:46
min(0.5, 0.7)
вот поэтому там и строгая нотация int — компилятор не даст писать double там, где этого делать нельзя. Не то, что там всякие макросы, где что хуйнёшь то и выполнится.

Vladislav
05.11.2016
01:41:08

Andrey
05.11.2016
01:41:09
мы всё таки работает со строго типизированным языком, а не с явоскриптами там всякими

Vladislav
05.11.2016
01:41:39
обобщения не нарушают строгую типизацию, просто в сишечке с ними туго

ovf
05.11.2016
01:41:58

Sergey
05.11.2016
01:42:00
> c
> шваблонные функции

Vladislav
05.11.2016
01:42:03

Sergey
05.11.2016
01:42:48

Google

ovf
05.11.2016
01:43:22
забавно, что ты называешь обобщением систему для генерации кода из шаблона с подстановкой типов
я бы наоборот назвал это обчащением

Sergey
05.11.2016
01:43:48
и не только типов

ovf
05.11.2016
01:43:57
тем хуже

Vladislav
05.11.2016
01:43:58

Andrey
05.11.2016
01:44:55
знаете, что раздражает в сишных прогах
когда они падают и вы открываете корку в gdb, вы не видите что стало с макросами
вернее, вы видите что стало после них

ovf
05.11.2016
01:45:46
стало с макросами?
а?

Andrey
05.11.2016
01:46:08
да, хуёво сказал

Sergey
05.11.2016
01:46:18
си:
https://github.com/guillermocalvo/exceptions4c
довольно впечатляет

ovf
05.11.2016
01:47:35
и тем не менее
ну на min (и ещё пожалуй qsort) шаблоны, конечно, можно попробовать продавать

Sergey
05.11.2016
01:47:52
так что сетджмп хорошо

ovf
05.11.2016
01:48:38
я в gdb могу, например, делать p <макрос> и т.д.

Sergey
05.11.2016
01:49:26
они туда не попадают. у меня плохо с сарказмом

Vladislav
05.11.2016
01:50:37

Andrey
05.11.2016
01:52:15