Я нашел следующий код в программе на C:
while (1)
{
do_something();
if (was_an_error()) break;
do_something_else();
if (was_an_error()) break;
[...]
break;
}
[cleanup code]
Здесь while(1)
используется как локальная эмуляция "finally". Вы также можете записать это с помощью goto
s:
do_something()
if (was_an_error()) goto out;
do_something_else()
if (was_an_error()) goto out;
[...]
out:
[cleanup code]
Я думал, что решение goto - обычная идиома. Я видел несколько случаев этой идиомы в источниках ядра, и это также упоминается в книге "Кодекс Чтения" Диомидиса Спинеллиса.
Мой вопрос: какое решение лучше? Есть ли какая-либо конкретная причина для использования решения while(1)
?
Вопрос 943826 не отвечает на мой вопрос.