[/b/] [/d/] [/tu/] [/a/] [/ph/] [/wa/] [/cg/] [/t/] [/p/]
Пердолился сегодня с макросами на Си. Мне нужно внутри тела функции знать ее возвращаемый тип чтоб автоматически сгенерировать его "нулевое" значение. Как я понимаю в сколько-нибудь чистом виде эта задача не решаема. Сейчас объявляю функции так:fun( Sum, int ) ( int A, int B ) ( return A + B; )Выглядит терпимо, но хотелось бы чего-то получше. Экспандится ~примерно~ в такое:int Sum_Return_Value; int Sum ( int A, int B ) { typeof( Sum_Return_Value ) ERROR_Return_Value; return A + B; }Есть еще макросы для генерации ошибки, которые вайпают ERROR_Return_Value и возвращают его. (Инфа об ошибке пушится в специальный стек.)
Пердолился сегодня с макросами на Си. Мне нужно внутри тела функции знать ее возвращаемый тип чтоб автоматически сгенерировать его "нулевое" значение. Как я понимаю в сколько-нибудь чистом виде эта задача не решаема. Сейчас объявляю функции так:
fun( Sum, int ) ( int A, int B ) ( return A + B; )
Выглядит терпимо, но хотелось бы чего-то получше. Экспандится ~примерно~ в такое:
int Sum_Return_Value; int Sum ( int A, int B ) { typeof( Sum_Return_Value ) ERROR_Return_Value; return A + B; }
Есть еще макросы для генерации ошибки, которые вайпают ERROR_Return_Value и возвращают его. (Инфа об ошибке пушится в специальный стек.)
https://github.com/Hirrolot/metalang99
>>217697Если ты за деньги пишешь для кого-то код, переход на какой-то другой язык без согласования (которого очевидно не будет т.к. надо всех других пересаживать на какой-то другой язык и всё переписывать, а это затормозит разработку и вообще лишний геморрой) невозможен.
>>217704тебе кто-то за деньги в продакшен разрешил эту хуиту на макросах городить? не верю.
>>217704хотя если у вас макросы городят, то реально подкинь на планёрке зиг. самое то up yours.фапча говорит у мелкоченьского линька?
>>217704хотя если у вас макросы городят, то реально подкинь на планёрке зиг. самое то up yours.
фапча говорит у мелкоченьского линька?
>>217705Я не ОП вообще, но ничего необычного в нагораживании макросов в продакшене нет. Там даже всякие кодогенерирующие костыли могут встраивать запросто.
>>217706>shedbikeshedding же
>>217706
>shed
bikeshedding же
>>217696Несбалансированные скобочки смертный грех, увы. Пока у меня так:#define fun( C_Type, Name ) static C_Type MY( ERROR_Result ); C_Type Name fun_ARGS#define fun_ARGS(...) (__VA_ARGS__) { \ typeof( MY( ERROR_Result ) ) ERROR_Result; memset( (void*) &ERROR_Result, 0, sizeof( ERROR_Result ) ); \ fun_BODY#define fun_BODY(...) \ {__VA_ARGS__} \}Нужно будет еще подумать что делать если функция возвращает void. Макросы для работы с ошибками в применении выглядят примерно так:let F = OK( Open_Frobnicator() );let Frob_Count = TRY( Frobnicate( F ) );OK( Frob_Count <= 19, "Too many frobs" ); NO( Frob_Count < 5, "Too few frobs" ); Comment too long. Click here to view the full text.
>>217696Несбалансированные скобочки смертный грех, увы. Пока у меня так:
#define fun( C_Type, Name ) static C_Type MY( ERROR_Result ); C_Type Name fun_ARGS#define fun_ARGS(...) (__VA_ARGS__) { \ typeof( MY( ERROR_Result ) ) ERROR_Result; memset( (void*) &ERROR_Result, 0, sizeof( ERROR_Result ) ); \ fun_BODY#define fun_BODY(...) \ {__VA_ARGS__} \}
Нужно будет еще подумать что делать если функция возвращает void. Макросы для работы с ошибками в применении выглядят примерно так:
let F = OK( Open_Frobnicator() );let Frob_Count = TRY( Frobnicate( F ) );OK( Frob_Count <= 19, "Too many frobs" ); NO( Frob_Count < 5, "Too few frobs" );
>>217734ебать ты бесноватый. вызывает уважение. напиши потом что получится.
>>217734>Несбалансированные скобочки смертный грех, увы.Тогда как тебе такой вариант?#define F(ret_t,fun_name, ...) \ret_t fun_name (__VA_ARGS__){static const typeof(ret_t) ERROR_Return_Value; F2 #define F2(...) __VA_ARGS__}F(int, sum, int a, int b) (return a+b;)Или тут тоже скобочки не по фэншую?
>>217734
>Несбалансированные скобочки смертный грех, увы.
Тогда как тебе такой вариант?
#define F(ret_t,fun_name, ...) \ret_t fun_name (__VA_ARGS__){static const typeof(ret_t) ERROR_Return_Value; F2 #define F2(...) __VA_ARGS__}F(int, sum, int a, int b) (return a+b;)
Или тут тоже скобочки не по фэншую?
>>217803Сейчас у меня так:fun( int,Sum, int A, int B ) return A + B; endПримерно то же самое. Проблема с передачей тела как аргумента макроса в том что LINE внутри всего тела имеет одно значение (номер линии на которой закрываящая скобка вызова макроса). А я LINE использую для указания места ошибки. Крч сам я пердолиться с этим больше не буду. Спрошу пару человек, на этом все.
>>217803Сейчас у меня так:
fun( int,Sum, int A, int B ) return A + B; end
Примерно то же самое. Проблема с передачей тела как аргумента макроса в том что LINE внутри всего тела имеет одно значение (номер линии на которой закрываящая скобка вызова макроса). А я LINE использую для указания места ошибки. Крч сам я пердолиться с этим больше не буду. Спрошу пару человек, на этом все.
Почему при всех призывах экономить воду, в приморских городах никто не заморачивается с подачей морской воды в качестве технической?
>>217544Ну а в каких бытовых нуждах ты её ещё можешь предложить использовать?>>217539 >Пластик никак не взаимодействует с солью.Зато насосы которые будут держать давление в системе из пластика сделать проблематично.>>217550Хлорка + поваренная соль + вода = газенваген. Оно то может решить, но не так как хотелось-бы.
>>217544Ну а в каких бытовых нуждах ты её ещё можешь предложить использовать?>>217539
>Пластик никак не взаимодействует с солью.
Зато насосы которые будут держать давление в системе из пластика сделать проблематично.>>217550Хлорка + поваренная соль + вода = газенваген. Оно то может решить, но не так как хотелось-бы.
>>217597> Ну а в каких бытовых нуждах ты её ещё можешь предложить использовать?Помыть резиновый коврик в машину.> Зато насосы которые будут держать давление в системе из пластика сделать проблематично.Уже давно делают насосы с пластиковыми внутреностями.> газенвагенЭто же хорошо.
>>217597
> Ну а в каких бытовых нуждах ты её ещё можешь предложить использовать?
Помыть резиновый коврик в машину.
> Зато насосы которые будут держать давление в системе из пластика сделать проблематично.
Уже давно делают насосы с пластиковыми внутреностями.
> газенваген
Это же хорошо.
>>217599В бытовой вариации это делают на улице со сливом отработанной воды в грунт, что в случае морской - недопустимо.В промышленной - там типично (кроме совсем кустарных автомоек) циклическая рекуперация моющего состава форсунки-фильтр-восполнение потерь-форсунки, ну и моют всё что вообще мочить можно одним составом ибо так быстрей и дешевле. (ну и как будет взаимодействовать соль с ПАВ, да и металлом кузова и прочих частей автомобилей никто не собирается решать)>Это же хорошо.А, ну да. Лол. В тубзик сходил, в реанимацию съездил.
>>217599В бытовой вариации это делают на улице со сливом отработанной воды в грунт, что в случае морской - недопустимо.В промышленной - там типично (кроме совсем кустарных автомоек) циклическая рекуперация моющего состава форсунки-фильтр-восполнение потерь-форсунки, ну и моют всё что вообще мочить можно одним составом ибо так быстрей и дешевле. (ну и как будет взаимодействовать соль с ПАВ, да и металлом кузова и прочих частей автомобилей никто не собирается решать)
>Это же хорошо.
А, ну да. Лол. В тубзик сходил, в реанимацию съездил.
>>217602> В бытовой вариации это делают на улицеОткуда на улице водопровод?> В тубзик сходил, в реанимацию съездил.Зачем доводить до таких ядерных концентраций?
>>217602
> В бытовой вариации это делают на улице
Откуда на улице водопровод?
> В тубзик сходил, в реанимацию съездил.
Зачем доводить до таких ядерных концентраций?
>>217525Но я так и не нашёл - а какие профиты это сулит? Экономия пресной воды? Это разве что для пустынных арабов актуально, но они не заморачиваются. Видимо, профитов нет.
>>217608> Экономия пресной воды?This.> Это разве что для пустынных арабов актуальноОткуда тогда все эти призывы экономить воду?
>>217608
> Экономия пресной воды?
This.
> Это разве что для пустынных арабов актуально
Откуда тогда все эти призывы экономить воду?
>>217609>Откуда тогда все эти призывы экономить воду?очевидно что бюрократу поще и дешевле попиздеть про экономию воды(и возможно добиться какого-то результата повлияв на поведению потребителей), нежели чем организовать физическую подачу больше воды для растущего города, а все города постоянно растут. в дарвинского результате отбора пиздаболы остаются в системе, а реальные организаторы уволняются. в итоге вся система коллапсирует. прозреваю что нечто подобное уже было во время исторических коллапсов цивилизаций, и что ещё интереснее - прозреваю что аналог этой траектории системы есть в экологических нишах.
>>217609
>Откуда тогда все эти призывы экономить воду?
очевидно что бюрократу поще и дешевле попиздеть про экономию воды(и возможно добиться какого-то результата повлияв на поведению потребителей), нежели чем организовать физическую подачу больше воды для растущего города, а все города постоянно растут. в дарвинского результате отбора пиздаболы остаются в системе, а реальные организаторы уволняются. в итоге вся система коллапсирует. прозреваю что нечто подобное уже было во время исторических коллапсов цивилизаций, и что ещё интереснее - прозреваю что аналог этой траектории системы есть в экологических нишах.
>>217609>призывы экономить водуДавно уже не видел. У нас даже поливальные машины из водопровода набирают.
>призывы экономить воду
Давно уже не видел. У нас даже поливальные машины из водопровода набирают.
>>217610Ну не знаю как у вас, там где я регион вообще засушливый и с водой всегда сезонно имеются некоторые проблемы.Но и то впрочем компании призывов к экономии разворачиваются только когда ситуация с водой начинает обещать стать опасной.А из реальных попыток применения морской - у нас во время последней крупной суши 15-17го годов были попытки строить опреснители. Но морскую водопроводом качать, уже упоминал, в применении для населения это весомый риск загадить почву в городе. (даже если что-то начинать выдумывать)
>>217609В Калифорнии может и есть призывы, и даже серьёзные штрафы. Но в РФ всё иначе, никакой экономии и даже призывов я не наблюдаю.В некоторых городах РФ воду из центральной отопительной системы вовсе окрашивают, чтобы жители её не спускали и не мылись ею, лол. Т.е. фактически портят воду. Схема очень стараяя, но ей пользуются до сих пор. https://gorodkirov.ru/news/zelenaya-voda-v-batareyah---kommunalschiki-zaschischayut-otoplenie-20080116-1513/BTW, у меня счётчиков нет, могу воду лить хоть 24/7. А ты собрался целую новую систему выстраивать, чтобы кто-то унитазы смывал, лол.
>>217609В Калифорнии может и есть призывы, и даже серьёзные штрафы. Но в РФ всё иначе, никакой экономии и даже призывов я не наблюдаю.
В некоторых городах РФ воду из центральной отопительной системы вовсе окрашивают, чтобы жители её не спускали и не мылись ею, лол. Т.е. фактически портят воду. Схема очень стараяя, но ей пользуются до сих пор. https://gorodkirov.ru/news/zelenaya-voda-v-batareyah---kommunalschiki-zaschischayut-otoplenie-20080116-1513/
BTW, у меня счётчиков нет, могу воду лить хоть 24/7. А ты собрался целую новую систему выстраивать, чтобы кто-то унитазы смывал, лол.
- wakaba 3.0.7 + futaba + futallaby -