Богдан
достаточно распространенный трюк, если ты о while(0)
Ruslan
Замену go-to?
Alexey
Когда надо вставить через define многострочный код, так часто делают...
Богдан
тебе бы было легче читать этот код, если бы там были одни if-ы?
Богдан
их разделили
Богдан
причем, любое выполнение условия скипнет последующие проверки
Алексей
Ruslan
Да.
Вот и ответ, простой и понятный
Алексей
Вполне нормальный код. На мой взгляд.
Евгений
Sneg.
Привет всем, забыл как кнопкой сбросить показания на pzem004 v1. Кто знает напомните пожалуйста
Evgen
Тебе там что то непонятно? =)
подлянка тонко заныкана
индусский код
Шо это за нахуй блядь? И как оно работает?
I
индусский код
Сикх плюс плюс
Ruslan
Шо это за нахуй блядь? И как оно работает?
магия видимо ))) ну это я в процессе раскопок mbedtls нашёл )
магия видимо ))) ну это я в процессе раскопок mbedtls нашёл )
Дай ссыль на гитхаб. покекаю над остальным
Ruslan
Дай ссыль на гитхаб. покекаю над остальным
https://lists.trustedfirmware.org/archives/list/mbed-tls@lists.trustedfirmware.org/message/P7ZTB5MAIIBDDMXRA5DUNBU2CMS4ZPY3/
Алексей
Читает из файла.
🤙🏻 ℙ𝔸𝕍𝔼𝕃
индусский код
Я так понял это early return только через конструкцию цикла сделан, а все что вне цилка это типа файнали блок кода. Не обычно для С, воазможно. Но вполне изящно и функционально, на мой взгляд))
Алексей
Вопрос конечно к применимости этой функции, где для чтения данных нужно открыть и закрыть файл.
Нормально всё там :)
Меня глюкнуло и показалось что там while 1...
Anton
индусский код
это просто код фанатиков-противников-гоуту. как сделать гоуту без слова гоуту
Sid
Замену go-to?
Ну го ту считается моветом, тк позволяет куда угодно прыгнуть
Anton
Я так понял это early return только через конструкцию цикла сделан, а все что вне цилка это типа файнали блок кода. Не обычно для С, воазможно. Но вполне изящно и функционально, на мой взгляд))
там нет ретурн. бряк выносит за пределы цикла (ниже вайла). это завуалированный гоуту, который ещё больше (как мы тут видим) запутывает людей.
Ruslan
Ну го ту считается моветом, тк позволяет куда угодно прыгнуть
я бы ваще делал asm { push :exit } и тупо return делал )))
Sid
я бы ваще делал asm { push :exit } и тупо return делал )))
да делать можно как хочешь, главное иметь понимание чем стремен готу
Sid
ну и может быть тупо запрещено его юзать
Slava
Мой диагноз: код уёбский.
Sid
да ничем, всё зависит от прокладки
есть всякие стандарты ака набор требований для безопасного кодинга типа мирса
Aleksandr
мне не понятно зачем открытие одного и того же файла в цикле?...
Aleksandr
ну и сравнение с NULL один раз достаточно как по мне выполнить )
Leonid
возможно read как-то может изменить указатель
🤙🏻 ℙ𝔸𝕍𝔼𝕃
там нет ретурн. бряк выносит за пределы цикла (ниже вайла). это завуалированный гоуту, который ещё больше (как мы тут видим) запутывает людей.
Ну так я так и напсиал что это "типа" ранний возврат, цикл же прерывается от бряка. А код который за циклом выполняется всегда вне зависимости все ок или не ок. По сути это и есть ER, прост тут надо при выходе всегда еще чекать дескрипор файла и закрывать его. Если не последние строки то был бы оычный ER без цикла.
Aleksandr
чтение в буфер в цикле это нормальная практика, только опять же нужно заполнять считанными данными некую строку )
🤙🏻 ℙ𝔸𝕍𝔼𝕃
мне не понятно зачем открытие одного и того же файла в цикле?...
Это цикл на одну итерацию, по факту юзается как препываемый блок кода и все.
Leonid
если по логике программы не может быть более одной итерации, то решение плохое
Leonid
только запутывает
🤙🏻 ℙ𝔸𝕍𝔼𝕃
если по логике программы не может быть более одной итерации, то решение плохое
не могу согласится с этим однозначно, читается сложно, но избавляет от копипаста, или враппера.
Leonid
while - цикл
Aleksandr
Это цикл на одну итерацию, по факту юзается как препываемый блок кода и все.
и это очень странно ) я думаю, есть необходимость читать весь файл
Ruslan
while - цикл
это такой try - finally
Алексей
while - цикл
while(0) - это не цикл.
Ruslan
там всё читается за один раз
Aleksandr
и read двигает по идее указатель считывания с файла
Aleksandr
а open вполне может сбрасывать его
🤙🏻 ℙ𝔸𝕍𝔼𝕃
while(0) - это не цикл.
да, а do {} while(0) это цикл в одну итерацию )))
Aleksandr
в итоге мы получаем бесконечный цикл если файл длиней чем size
Aleksandr
а
Aleksandr
блин
Aleksandr
теперь понял
Anton
Капец, блин, сколько тут программистов... даже на первый курс не тянет ваша квалификация, блин
Алексей
В общем идея уйти от goto таким образом, путает людей. Как говорится, с чем боролись, на то и напоролись )))
Ruslan
а вот это интересно: #define NVS_NS_CERTS "CERTIFICATES" ESP_ERROR_CHECK(nvs_open(NVS_NS_CERTS, NVS_READWRITE, &handle)); D (32317) nvs: nvs_open_from_partition CERTIFICATES 1
Ruslan
с какого хрена оно лезет в кастомный раздел?
Leonid
я согласен, что while(0) не цикл, но решение так себе
Anton
о, теперь у нас публичные чтения сорцов в блоге?
Ruslan
а, это видимо дебаг сообщение кривое, по идее оно из дефолта читает
🤙🏻 ℙ𝔸𝕍𝔼𝕃
я согласен, что while(0) не цикл, но решение так себе
Самое компактное решение без goto, для сорцов в жопе либы - вполне норм)
Anton
На первый курс церковно приходной школы?
церковно-православно-программистской школы
Алексей
В стеке openPowerLink во всю используется goto, как раз в таких случаях. Проверка условия, если неудачно, то goto EXIT; Метка EXIT в конце функции, там если надо идёт закрытие, удаление ненужного.
Anton
для современного Си есть более удобное предложение: https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2895.htm
Ruslan
у go спёрли?
Ruslan
что надо указать в мониторе, чтобы он бэктрейс сразу с указанием на строки кода писал? map и elf подложены а то я щас скриптом вытаскиваю всё
Sid
у go спёрли?
не, defer скорее из js утащили
Sid
эту фичу ожидают в c-23
т.е. ждем в проде компиляторном году к 25)
Anton
без этой фичи у гцц и шланга есть атрибут
Anton
https://stackoverflow.com/a/69336439/6512437