-
- Переделал, второй вариант более не рассматривается. Misra надо
уважать хоть и без фанатизма да и не нравятся мне эстетически куча
return из потрохов функции. 3m(1433 знак., 05.02.2026 17:33)
- ну то есть возврат ошибки и валидного значения оставил совмещенным. - abivan(05.02.2026 17:58, +1)
- И что ? Вообще не так. Tyмблep(281 знак., 06.02.2026 15:04)
- Ошибочное значение вообще не должно возникать при работе, это в первую очередь отладочная ветка и на нее выдается диагностика. - 3m(05.02.2026 19:27)
- Я такие вещи энумераторами делаю, типа: Nikolay_Po(417 знак., 05.02.2026 18:18)
- ну то есть возврат ошибки и валидного значения оставил совмещенным. - abivan(05.02.2026 17:58, +1)
- 1-й конечно. Tyмблep(139 знак., 04.02.2026 14:20)
- Вообще пофиг для оптимизирующего компилятора. - VladislavS.(04.02.2026 09:53)
- Сделайте второй вариант, с переменной ReturnValue перед
переключателем. В переключателе все варианты - присваивают этой
переменной соответствующее значение и оканчиваются break; для всех,
включая default. Nikolay_Po(43 знак., 03.02.2026 19:49)
- В default break не нужен, там дальше некуда идти. - Бoмж(04.02.2026 21:42)
- По идее - да. Но когда смотришь на стройный порядок case-break, то default без брейка, этот порядок нарушает. - Nikolay_Po(04.02.2026 23:46)
- Так сделано в первом варианте. - 3m(03.02.2026 19:53)
- Хреново читается. Но второй хуже. - Nikolay_Po(03.02.2026 20:00)
- В default break не нужен, там дальше некуда идти. - Бoмж(04.02.2026 21:42)
- 1. Второе не пройдет MISRA. Потому что у функции должен быть только
одна точка входа и только одна точка выхода (один return). EmbedProg(775 знак., 03.02.2026 19:37,
, +3) - если return вместо присвоения то я за return(2) Но в данном примере мне оба варианта не понравились. ф-я возвращает bool( 0/1) и в случае успеха и в случае (ошибки return false;) Я б так не делал. - abivan(03.02.2026 19:09)
- Т.е. суть вопроса - делать один return в конце или несколько return
из case? Для конкретного этого случая - вариант 2, т.к. выглядит
компактно и вполне понятно il-2(169 знак., 03.02.2026 18:24)
- Видел как-то дизассмеблер для 51го - там switch и много case
превратились в переход "JMP @A + DPTR", а там по месту много LJMP
уже на нужные реализации. - POV(03.02.2026 18:27)
- У современных компилеров, ни разу. Хотя каких тока способов
относительной адресаццыи не придумали. Видать, накладные расходы не
оправдываются. - mse homjak(03.02.2026 18:31)
- Зато время исполнения - одинаково. И да, это был Keil 15летней
давности. - POV(03.02.2026 18:33)
- Не... если кейс длинный, то "сравнить-если-не-экю-то-жумп", в концэ концов, для каких-то значений будет дольше исполняцца. - mse homjak(03.02.2026 18:42)
- Зато время исполнения - одинаково. И да, это был Keil 15летней
давности. - POV(03.02.2026 18:33)
- У современных компилеров, ни разу. Хотя каких тока способов
относительной адресаццыи не придумали. Видать, накладные расходы не
оправдываются. - mse homjak(03.02.2026 18:31)
- Видел как-то дизассмеблер для 51го - там switch и много case
превратились в переход "JMP @A + DPTR", а там по месту много LJMP
уже на нужные реализации. - POV(03.02.2026 18:27)
- И так, и так жутко выглядит. Кнопочка и лампочка - и сразу какие-то
указатели, структуры... Непонятно, зачем. Наверняка всё это могло
быть сделано проще. - SciFi(03.02.2026 18:10)
- В вас говорит пораженческое настроение от частого общения с нейросетями! Ralex(24 знак., 03.02.2026 18:22, +1)
- 2 - Ralex(03.02.2026 18:03)
- присвоить bool'у int? ну лучше бы маску наложил: return lamp_memory[desc->idx] & 0x80 - POV(03.02.2026 18:03)
- Вариант с маской еще хуже: true это все таки в большинстве случаев
1 и при 0x80 неизвестно что может поломаться. Если уж соблюдать
правильность то как то так: return (lamp_memory[desc->idx] &
0x80) != 0; - 3m(03.02.2026 18:17)
- Ничего не сломается. Накладывать маску нормально. В бул
превращается 0 или !0. POV(1 знак., 03.02.2026 18:21, картинка)
- На Хабре статья была на эту тему в прошлом году. Подробности я уже
забыл но суть в том что лучше не делать true отличным от 1 даже при
том что это допустимо по стандарту. - 3m(03.02.2026 18:46)
- Не верно, по моему. Лучше не делать фолс отличным от нуля. А всё,
что не ноль - тру. Nikolay_Po(248 знак., 03.02.2026 19:14)
- !0 - это 1 при любых раскладах. Там нет никакой мистики. - SciFi(03.02.2026 19:31)
- Не верно, по моему. Лучше не делать фолс отличным от нуля. А всё,
что не ноль - тру. Nikolay_Po(248 знак., 03.02.2026 19:14)
- На Хабре статья была на эту тему в прошлом году. Подробности я уже
забыл но суть в том что лучше не делать true отличным от 1 даже при
том что это допустимо по стандарту. - 3m(03.02.2026 18:46)
- вот так часто делают: !!(value & mask) - SciFi(03.02.2026 18:19)
- Я зачастую так предпочитаю в силу наглядности (value & mask)?1:0; - =AlexD=(06.02.2026 15:14)
- Ничего не сломается. Накладывать маску нормально. В бул
превращается 0 или !0. POV(1 знак., 03.02.2026 18:21, картинка)
- Вариант с маской еще хуже: true это все таки в большинстве случаев
1 и при 0x80 неизвестно что может поломаться. Если уж соблюдать
правильность то как то так: return (lamp_memory[desc->idx] &
0x80) != 0; - 3m(03.02.2026 18:17)
- Переделал, второй вариант более не рассматривается. Misra надо
уважать хоть и без фанатизма да и не нравятся мне эстетически куча
return из потрохов функции. 3m(1433 знак., 05.02.2026 17:33)