-
- Зачем изобретать велосипед? Пользуйтесь языком где всё это и многое
другое давно есть - VladislavS.(1 знак., 14.11.2025 05:32, ссылка)
- мы микроконтроллеры и компиляторы для них не выбираем, они выбирают
за нас. - abivan(14.11.2025 11:23)
- В смысле "мы микроконтроллеры не выбираем"? Что: начальство сказало
- "пользуйся говном", и все дружно побежали? НЕ ВЕРЮ! - Eddy_Em(14.11.2025 11:53)
- Иногда да, так. Воля государева и все такое. - LightElf(14.11.2025 12:06)
- когда тиражи изделия достигают 100тыс в месяц, то на чем начальство скажет на том и будешь делать. - abivan(14.11.2025 12:01)
- В смысле "мы микроконтроллеры не выбираем"? Что: начальство сказало
- "пользуйся говном", и все дружно побежали? НЕ ВЕРЮ! - Eddy_Em(14.11.2025 11:53)
- Жду, когда Плюсы, из-за нехватки символов, переведут на юникод с
эмодзи. Двойные квадратные кавычки в тексте программы... не язык, а
ласкутное одеяло. - Cкpипaч(14.11.2025 09:11)
- А эмодзи уже практически тут :) VladislavS.(1 знак., 14.11.2025 10:03, картинка)
- Вашу православную Сишечку это тоже накрыло Живите с этим. VladislavS.(20 знак., 14.11.2025 09:43, ссылка)
- пейздесь.
уродцыэстеты, как говорил повар-оккультист Юрайда - Vit(14.11.2025 11:00)- Так не обязательно же эту страшилу писать, достаточно коммента "// fallthrough " - Eddy_Em(14.11.2025 11:54)
- внезапное лгбт там, где не ждали... - SciFi(14.11.2025 10:31)
- Главно что наш Python пока не зацепило :))) - Cкpипaч(14.11.2025 09:45)
- пейздесь.
- Ага. А ведь есть вполне стандартный оператор continue который можно
было бы без проблем туда вкорячить. - il-2(14.11.2025 09:37)
- continue для циклов - Vit(14.11.2025 09:56)
- Расшарить на свич. - Codavr(14.11.2025 11:32)
- Не надо, пропадет вариант выход из switch AlexBi(111 знак., 14.11.2025 11:53, +1)
- Да, не подумал. Но уж какое-нибудь continue_no_break вместо [[этого
ужаса]] смотрелось бы более органично - il-2(14.11.2025 17:18)
- +1. просто рушит картину мира. Вроде как оператор но какой то ебанутый. - Codavr(14.11.2025 20:13)
- Логично. - Codavr(14.11.2025 12:02)
- Да, не подумал. Но уж какое-нибудь continue_no_break вместо [[этого
ужаса]] смотрелось бы более органично - il-2(14.11.2025 17:18)
- не получится скрестить с лапшой когда циклы и свичи перемешаны в
вариантах а-ля прототреды на свичах. хотя с break такие мурашки
как-то прокатывают - Vit(14.11.2025 11:51)
- И это верно. - Codavr(14.11.2025 12:04)
- Не надо, пропадет вариант выход из switch AlexBi(111 знак., 14.11.2025 11:53, +1)
- Расшарить на свич. - Codavr(14.11.2025 11:32)
- Достаточно было бы #pragma intended-no-break Cкpипaч(113 знак., 14.11.2025 09:50)
- continue для циклов - Vit(14.11.2025 09:56)
- От их вложенных шаблонов просто крыша едет. Смотришь на такой код:
вроде бы, С++, но сильно какой-то "голубизной" отдает ☺ - Eddy_Em(14.11.2025 09:30)
- Никто не заставляет сразу метапрограммы писать. Для начала
достаточно просто С-шный код скомпилировать С++ компилятором. Уже
профит будет. - VladislavS.(14.11.2025 09:37)
- Не будет там никакого профита. А если вместо gcc использовать
clang, то вообще код переделывать придется, т.к. шланг не любит
"гццизмы" и "гнусизмы". - Eddy_Em(14.11.2025 11:56)
- . - VladislavS.(14.11.2025 15:46)
- Код должен соответствовать стандарту, тогда всё равно чем собирать. А профит будет, это я говорю. - VladislavS.(14.11.2025 15:39)
- Заставляет читать. Но то такэ, с развитием AI это перестало быть существенным
неудобством. Cкpипaч(97 знак., 14.11.2025 09:44)
- Не только читать, а еще и ОТЛАЖИВАТЬ :-) il-2(1 знак., Вчера, 08:43, ссылка)
- Я сейчас с помощью Курсора ковыряю свой плюсовой проект 12 летней давности )) - POV(14.11.2025 11:57)
- насчёт профита - сильно спорно - Vit(14.11.2025 09:40)
- Не будет там никакого профита. А если вместо gcc использовать
clang, то вообще код переделывать придется, т.к. шланг не любит
"гццизмы" и "гнусизмы". - Eddy_Em(14.11.2025 11:56)
- Никто не заставляет сразу метапрограммы писать. Для начала
достаточно просто С-шный код скомпилировать С++ компилятором. Уже
профит будет. - VladislavS.(14.11.2025 09:37)
- Точка невозврата была десятилетия назад, поздно жаловаться :-) - SciFi(14.11.2025 09:12)
- Я исчезающе редко пишу что-либо на Плюсах, мне-то чего жаловаться.
Это скорее виртуально "покрутил пальцем у виска" - прагму
компилятору можно было и не оформлять так попугайски. - Cкpипaч(14.11.2025 09:16)
- Мух надо отделять от котлет. Всё что за решёткой должно остаться в препроцессоре. А компилятору достаться зёрна. - VladislavS.(14.11.2025 19:11)
- Не кажи гоп. Эмодзи как язык описания задачи для ИИ это круто :) - Codavr(14.11.2025 09:15)
- Ровно о том же подумал. Плюсостроители забавные ребята, они точно
не пройдут мимо ИИ. Скоро в каждом плюсовом компиляторе:
обязательный ЧятГПТ. - SciFi(14.11.2025 09:19)
- Причем по дефолту будет открываться ;) - Codavr(14.11.2025 09:54)
- ИМХО оно давно уже там есть - Anvar(14.11.2025 09:21)
- Ровно о том же подумал. Плюсостроители забавные ребята, они точно
не пройдут мимо ИИ. Скоро в каждом плюсовом компиляторе:
обязательный ЧятГПТ. - SciFi(14.11.2025 09:19)
- Я исчезающе редко пишу что-либо на Плюсах, мне-то чего жаловаться.
Это скорее виртуально "покрутил пальцем у виска" - прагму
компилятору можно было и не оформлять так попугайски. - Cкpипaч(14.11.2025 09:16)
- Все это что? О том что спрашивал ТС? - Codavr(14.11.2025 07:29)
- Да - VladislavS.(14.11.2025 07:33)
- Точно? Я вот вижу только одно отличие, что брейк здесь
подразумевается в принудительном порядке. А то что спрашивал ТС тут
в принципе не возможно, придется добавлять код одного кейса в
другой целиком. - Codavr(14.11.2025 07:41)
- Точно? Попробуйте ещё раз прочитать. - VladislavS.(14.11.2025 07:41)
- Пардон, не углядел. Правильная фишка! Но к сожалению не совместимо со старым кодом :( - Codavr(14.11.2025 07:47)
- Точно? Попробуйте ещё раз прочитать. - VladislavS.(14.11.2025 07:41)
- Точно? Я вот вижу только одно отличие, что брейк здесь
подразумевается в принудительном порядке. А то что спрашивал ТС тут
в принципе не возможно, придется добавлять код одного кейса в
другой целиком. - Codavr(14.11.2025 07:41)
- Да - VladislavS.(14.11.2025 07:33)
- мы микроконтроллеры и компиляторы для них не выбираем, они выбирают
за нас. - abivan(14.11.2025 11:23)
- Йа, вам фсем, адын умный вещ скажу, тока вы нэ абижяйтэсь...
Компилятор вывернет ваш кейс, мехом наружу, так, как посчитает
нужным. Ставьте брейк, не ставьте... Я чота остыл от оптимизаццый
кода по старой АСМовой памяти, дажэ для АВР. Успевает? Помещается?
Да и хуй с ним! - mse homjak(13.11.2025 20:08)
- Оптимизатор вывернет ассемблерный код мехом наружу, но логика
останется не тронутой. Нет брейка,тупо перейдет к следующему по
тексту операнду, есть goto тупо перейдет куда оно ткнуло. Как это
реализует оптимизатор ниибет. И нехер сочинять ужастики. - Codavr(13.11.2025 22:44, +1)
- Я про готу и прочие извращения половые. Для читаемости, сделал бы
функцыю с вызовом оттуда и отсюда или какой макрос, чтобы там и
там. С брейками. Чтобы не ходить по охуенно тонкому льду.
Понадобится влепить кейс, ткнёшь не глядя, и поимеешь развлекуху. А
так, пусть у компилера голова болит, у него их много. И, как
правило, он такие вещи просекает жэлезно. Когда отлаччик начинает
сигать куды не попадя, это оно. - mse homjak(13.11.2025 23:21)
- Дался вам этот гоуту, ничего кроме перехода по метке он не делает.
При любой оптимизации. Если лепить их без меры как в ассемблере, то
в конце концов запутаешься как в сетях, но если один два для
удобства воткнуть, то читаемость зачастую лучше, кем частокол из
брейков и каша из меток. Нехер надевать на себя шоры. - Codavr(13.11.2025 23:30)
- Я, в контексте порева с брейком. Писать надо стремиться, чтобы было
понятно тебе. А если понятно тебе, то компилер разберёцца. А так,
помнить, что тут имел в виду то, а тут, это, да ещо и потомушто,
можно было лет 30-40 назад. - mse homjak(13.11.2025 23:31)
- Вот именно! И каментить, каментить и каментить. Тыщу раз убеждался,
что лишний камент в жопу ниипет, а вот один не написанный может
моск сломать. И в пространных свичах особенно. - Codavr(13.11.2025 23:36)
- Можно спросить ИИ - "объясни, как работает этот код". И он тебе всё разжуёт. - Бoмж(Вчера, 17:36)
- Вот именно! И каментить, каментить и каментить. Тыщу раз убеждался,
что лишний камент в жопу ниипет, а вот один не написанный может
моск сломать. И в пространных свичах особенно. - Codavr(13.11.2025 23:36)
- Я, в контексте порева с брейком. Писать надо стремиться, чтобы было
понятно тебе. А если понятно тебе, то компилер разберёцца. А так,
помнить, что тут имел в виду то, а тут, это, да ещо и потомушто,
можно было лет 30-40 назад. - mse homjak(13.11.2025 23:31)
- Дался вам этот гоуту, ничего кроме перехода по метке он не делает.
При любой оптимизации. Если лепить их без меры как в ассемблере, то
в конце концов запутаешься как в сетях, но если один два для
удобства воткнуть, то читаемость зачастую лучше, кем частокол из
брейков и каша из меток. Нехер надевать на себя шоры. - Codavr(13.11.2025 23:30)
- Я про готу и прочие извращения половые. Для читаемости, сделал бы
функцыю с вызовом оттуда и отсюда или какой макрос, чтобы там и
там. С брейками. Чтобы не ходить по охуенно тонкому льду.
Понадобится влепить кейс, ткнёшь не глядя, и поимеешь развлекуху. А
так, пусть у компилера голова болит, у него их много. И, как
правило, он такие вещи просекает жэлезно. Когда отлаччик начинает
сигать куды не попадя, это оно. - mse homjak(13.11.2025 23:21)
- Вот, кстати, ни разу не попадался вариант, чтобы кейсовый параметр(дажэ если они вида 0-1-2-3...), адресовал через косвенную адресаццыю. Всё сводится к "сравнение-жумпЕслиНеРавно". - mse homjak(13.11.2025 20:13)
- Оптимизатор вывернет ассемблерный код мехом наружу, но логика
останется не тронутой. Нет брейка,тупо перейдет к следующему по
тексту операнду, есть goto тупо перейдет куда оно ткнуло. Как это
реализует оптимизатор ниибет. И нехер сочинять ужастики. - Codavr(13.11.2025 22:44, +1)
- у меня Кейл стразу вываливает заготовку, я даже не экспериментирую. :-) И там везде break Лaгyнoв(56 знак., 13.11.2025 17:53)
- Извините за дурацкий вопрос от непрограммиста, а на goto сейчас
вообще тотальный запрет наложен? - reZident(13.11.2025 15:21)
- Асм не запретили, а гото запретили? Так не бывает. - SciFi(13.11.2025 16:16)
- +100! ) И на этом весь этот goto-анафемовский спич можно было бы и за(при)кончить. - SERGHIO(13.11.2025 18:26)
- нет, но goto моветон. Всегда можно обойтись без его использования и
в этом случае тоже. - abivan(13.11.2025 16:00)
- Я соглашусь, что с появлением defer в C2y потребность в goto
снижается. Но goto, ИМХО, в ряде случаев все равно понятнее. - LightElf(13.11.2025 17:35)
- defer еще более запутанная и непрозрачная хрень по сравнению с
goto. - 3m(13.11.2025 18:14)
- Смотря для чего, хотя я лично больше за _try/_finally. - LightElf(13.11.2025 19:08)
- defer еще более запутанная и непрозрачная хрень по сравнению с
goto. - 3m(13.11.2025 18:14)
- Полным-полно случаев, когда без goto невозможно обойтись. И попытка
сделать что угодно, но лишь бы goto не использовать - идиотизм! - Eddy_Em(13.11.2025 17:05)
- давай пример, обсудим идиотизм. У меня проект на 200+ только моих
файлов(без сторонних библиотек) и ни в одном из них нет goto, что я
делаю не так? - abivan(13.11.2025 17:45)
- А давай зададимся вопросом, так ли сильно case-switch отличается от
goto? (а уж их-то у тебя в тексте не может не быть :) - Cкpипaч(13.11.2025 23:01)
- да, сильно отличается, например возможностью свертки abivan(1 знак., 14.11.2025 11:15, картинка)
- Например, у тебя нет необходимости выйти из вложенных циклов. Либо
нет необходимости выйти из вложенных КА. Ну и т.д., и т.п. Только в
очень простом коде goto не нужен. А еще "крестоносцы" им не
пользуются явно, т.к. у них и goto, и longjump есть "под ковром".
Только они этого не знают. - Eddy_Em(13.11.2025 22:34)
- В Джаве break умеет выпрыгивать из вложенных циклов. Как бы goto,
но диапазон возможных применений сильно ограничен. - SciFi(13.11.2025 23:08)
- Странно что в плюсы этот синтаксис не добавили. - =AlexD=(14.11.2025 07:45)
- Ты несовсем прав. Обойтись - можно. И в 97,5% случаев компилятор
разберется и сведет к эквивалентному коду. Но визуально будет сложнее :) - Cкpипaч(13.11.2025 23:03)
- Естественно, конструкция вида Eddy_Em(523 знак., 14.11.2025 08:57)
- ok, а можно кусочек(скриншот) кода где это используешь, а не чисто
академически рассуждать, а то циклов можно было еще пяток добавить. - abivan(14.11.2025 11:20)
- Ну, вот - самый стандартный вариант, где обязательно нужен goto: Eddy_Em(333 знак., 14.11.2025 13:59)
- А можно кусочек (скриншот) кода где это вы используете пять+
вложенностей циклов? А то чисто академически рассуждать как-то не
по феншуй :) Cкpипaч(1 знак., 14.11.2025 13:21, ссылка)
- Можно и без кучи вложенностей - обработка ошибок. Andreas(228 знак., 14.11.2025 13:47)
- ok, а можно кусочек(скриншот) кода где это используешь, а не чисто
академически рассуждать, а то циклов можно было еще пяток добавить. - abivan(14.11.2025 11:20)
- Естественно, конструкция вида Eddy_Em(523 знак., 14.11.2025 08:57)
- В Джаве break умеет выпрыгивать из вложенных циклов. Как бы goto,
но диапазон возможных применений сильно ограничен. - SciFi(13.11.2025 23:08)
- А давай зададимся вопросом, так ли сильно case-switch отличается от
goto? (а уж их-то у тебя в тексте не может не быть :) - Cкpипaч(13.11.2025 23:01)
- давай пример, обсудим идиотизм. У меня проект на 200+ только моих
файлов(без сторонних библиотек) и ни в одном из них нет goto, что я
делаю не так? - abivan(13.11.2025 17:45)
- Ну-да, "обойтись" какими-то прагмами и не очень стандартными
fallthrough, вместо исконно-посконного goto. :-/ - reZident(13.11.2025 16:38)
- я не использую прагмы. мой код работает везде( С89) . Я спокойно не
ставлю брейк, но пишу комент //nobreak И вот так иногда делаю,
чтобы в кейсах код не дублировать abivan(1 знак., 13.11.2025 16:51, ссылка)
- А что будет страшного, если в вашем примере поставить goto LABEL2;
, а затем break; ? Формальный break будет на месте и предупреждения
не будет. Или наоборот - настанет борьба за предупреждение о
"недостижимом" break? :-))) reZident(170 знак., 13.11.2025 17:38)
- да ничего страшного, работать будет и компилятор будет доволен, но с моей точки зрения это ненужные сущности и загромождение кода. abivan(41 знак., 13.11.2025 18:08)
- А что будет страшного, если в вашем примере поставить goto LABEL2;
, а затем break; ? Формальный break будет на месте и предупреждения
не будет. Или наоборот - настанет борьба за предупреждение о
"недостижимом" break? :-))) reZident(170 знак., 13.11.2025 17:38)
- я не использую прагмы. мой код работает везде( С89) . Я спокойно не
ставлю брейк, но пишу комент //nobreak И вот так иногда делаю,
чтобы в кейсах код не дублировать abivan(1 знак., 13.11.2025 16:51, ссылка)
- Я соглашусь, что с появлением defer в C2y потребность в goto
снижается. Но goto, ИМХО, в ряде случаев все равно понятнее. - LightElf(13.11.2025 17:35)
- особенно, когда LABELn - метки. Я думал, что надо писать "goto LABEL1 ". И компилятор, наверное также думает. :) - =L.A.=(13.11.2025 15:39)
- Асм не запретили, а гото запретили? Так не бывает. - SciFi(13.11.2025 16:16)
- есть камешки подводные при вычисляемых метках. оптимизатор выбрасывает. конструкцию c вроде как лишней проверкой, но которая не выбрасывается, можно подсмотреть там --> Vit(1 знак., 13.11.2025 15:14, ссылка)
- Если GCC, то использовать комментарий вида /* FALLTHRU */ или /*
FALLTHROUGH */ на месте отсутствующего break; LightElf(146 знак., 13.11.2025 14:42, ссылка)
- Вот что-то взбрело мне в голову, что от "fallthru" до "ебись оно конем" - всего лишь один шаг ☺ - Eddy_Em(13.11.2025 22:35)
- Вобщем, анализ ситуации показал, что анализатор кода не разворачивает макросы, а тупо не видит break и поэтому выводит предупреждение. il-2(554 знак., 13.11.2025 12:23)
- Теперь break сделали почти обязательным, без него - варнинг. Если break в каком либо case не нужен полагается вместо break писать 3m(146 знак., 13.11.2025 12:22)
- Да обычное дело. Всегда работало начиная с турбоси. Варнинг да, патамушта в 99% это пропущенный брейк. Пользуйся не парься. - Codavr(13.11.2025 11:27)
- на всех моих компиляторах никогда не было такого предупреждения.
Анализаторами не пользуюсь. Но если напрягает можно такой вариант abivan(135 знак., 13.11.2025 11:05, +1)
- Идея понятна, но что-то не очень нравится... А если надо пропустить не один case, а несколько подряд? - il-2(14.11.2025 08:25)
- А в компиляторе есть возможность отключения конкретных варнингов? Я думаю, так было бы правильней и полезней всего. В IAR, например, vpv.vpv(103 знак., 13.11.2025 10:16, картинка)
- Выглядит ужасно, конечно. Встречное предложение: использовать GCC, там есть несколько вариантов на этот случай >>> SciFi(1 знак., 13.11.2025 09:50, ссылка)
- А почему бы не использовать стандарт? Например, комментарий "//
fallthrough" вместо пропущенного break, либо "#pragma fallthrough",
либо "__attribute__((fallthrough))"… Eddy_Em(39 знак., 13.11.2025 09:46)
- Не слыхал про такое, интересно... Пишут, что данный аттрибут
появился в C23. Насчет комментария я не понял - он влияет на
анализатор кода, или на компилятор тоже? И если влияет, то наверное
на на всякий компилятор... Эх, чьерт побьяри... мой вариант убирает
warning при компиляции, но анализатор кода все равно помечает
строку - "No break at the end of case" - il-2(13.11.2025 09:57)
- прагма работала и в 17-м стандарте. Естественно, gcc — я другими компиляторами и не пользуюсь (пользовался когда-то еще и sdcc, но решил, что STM8 - слишком уж убогие МК, так что, забил). Eddy_Em(56 знак., 13.11.2025 11:23)
- Эдди прав, все это работает, но для разных компиляторов, т.е. одним помогает одно, другим другое. Что поможет анализатору кода надо смотреть в описании анализатора кода. Возможно применение нескольких вариантов сразу, что бы и тем и этим. - AlexBi(13.11.2025 10:27)
- Не слыхал про такое, интересно... Пишут, что данный аттрибут
появился в C23. Насчет комментария я не понял - он влияет на
анализатор кода, или на компилятор тоже? И если влияет, то наверное
на на всякий компилятор... Эх, чьерт побьяри... мой вариант убирает
warning при компиляции, но анализатор кода все равно помечает
строку - "No break at the end of case" - il-2(13.11.2025 09:57)
- Зачем изобретать велосипед? Пользуйтесь языком где всё это и многое
другое давно есть - VladislavS.(1 знак., 14.11.2025 05:32, ссылка)