Богдан
достаточно распространенный трюк, если ты о while(0)
Ruslan
Ruslan
Замену go-to?
Alexey
Когда надо вставить через define многострочный код, так часто делают...
Ruslan
Богдан
тебе бы было легче читать этот код, если бы там были одни if-ы?
Ruslan
Богдан
их разделили
Богдан
причем, любое выполнение условия скипнет последующие проверки
Алексей
Ruslan
Да.
Вот и ответ, простой и понятный
Алексей
Вполне нормальный код. На мой взгляд.
Евгений
Sneg.
Привет всем, забыл как кнопкой сбросить показания на pzem004 v1. Кто знает напомните пожалуйста
Sneg.
Evgen
ㅤ
Шо это за нахуй блядь? И как оно работает?
I
ㅤ
Алексей
Алексей
Читает из файла.
🤙🏻 ℙ𝔸𝕍𝔼𝕃
Я так понял это early return только через конструкцию цикла сделан, а все что вне цилка это типа файнали блок кода.
Не обычно для С, воазможно. Но вполне изящно и функционально, на мой взгляд))
Алексей
Вопрос конечно к применимости этой функции, где для чтения данных нужно открыть и закрыть файл.
Anton
это просто код фанатиков-противников-гоуту. как сделать гоуту без слова гоуту
Sid
Замену go-to?
Ну го ту считается моветом, тк позволяет куда угодно прыгнуть
Anton
Ruslan
Sid
ну и может быть тупо запрещено его юзать
Ruslan
Slava
Мой диагноз: код уёбский.
Aleksandr
мне не понятно зачем открытие одного и того же файла в цикле?...
Aleksandr
ну и сравнение с NULL один раз достаточно как по мне выполнить )
Leonid
возможно read как-то может изменить указатель
Aleksandr
чтение в буфер в цикле это нормальная практика, только опять же нужно заполнять считанными данными некую строку )
Ruslan
Leonid
если по логике программы не может быть более одной итерации, то решение плохое
Leonid
только запутывает
Алексей
Leonid
while - цикл
Aleksandr
Ruslan
там всё читается за один раз
Aleksandr
и read двигает по идее указатель считывания с файла
Aleksandr
а open вполне может сбрасывать его
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
а, это видимо дебаг сообщение кривое, по идее оно из дефолта читает
ㅤ
Алексей
В стеке openPowerLink во всю используется goto, как раз в таких случаях. Проверка условия, если неудачно, то goto EXIT; Метка EXIT в конце функции, там если надо идёт закрытие, удаление ненужного.
Anton
для современного Си есть более удобное предложение: https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2895.htm
Ruslan
у go спёрли?
🤙🏻 ℙ𝔸𝕍𝔼𝕃
Anton
Ruslan
что надо указать в мониторе, чтобы он бэктрейс сразу с указанием на строки кода писал? map и elf подложены
а то я щас скриптом вытаскиваю всё
Sid
Anton
Anton
без этой фичи у гцц и шланга есть атрибут
Anton
https://stackoverflow.com/a/69336439/6512437