Задать вопрос
jimmyjonezz
@jimmyjonezz
Инженер

Поясните правила 57 и 58 в MISRA C. Почему break, continue — плохо?

Столкнулся со стандартом MISRA C, который гласит:
Rule 57 (required): The continue statement shall not be used.
Rule 58 (required): The break statement shall not be used (except to terminate the cases of switch statement.

Больше ни в каких требованиях к написанию кода я такого не видел. Чем это обусловлено? В самом документе пояснений нет.
  • Вопрос задан
  • 1240 просмотров
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
@Eddy_Em
Бред из разряда "goto - это плохо". Уж для мелкоконтроллеров goto - очень даже нормально. А в обработке КА и всяких условий просто необходимы break, continue, goto...
Ответ написан
Mrrl
@Mrrl
Заводчик кардиганов
Единственный разумный ответ, который я увидел - что если в блоке (теле цикла) кто-то захочет написать malloc, а в конце - парный к нему free (или, например, fopen/fclose), и не заметит, что в теле цикла есть break или continue, то могут возникнуть проблемы.
И в стандарте 2004 г. запрет на break ослабили. Запрет на goto и continue оставили.
Ответ написан
Комментировать
Потому что break и continue это варианты goto, а goto нарушает принципы структурного программирования.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы