Здравствуйте, -n1l-, Вы писали:
N>Ну конкретно тут в чем плюс его использования?
Вообще по правильному ( в теории, но не на практике ) вместо такого while(1) {;;; break;} или do {}while(0); надо делать функцию в которой уже выходить на end просто по return.
Но на практике особенно там где код не оптимизируют ( ядро например ) но производительность требуется используют такой вот метод.
while (1){
HANDLE h = open();
if ( !h )
break;
while (1){
s=write(h,"{");
if ( !s )
break;
write(h,"abc,def,uuu");
write(h,"}");
break;
}
close(h);
break;
}
то есть это по уму, по идеализму надо заменять на функцию даже если она один раз вывывается, но еще не понятно что яснее — функция которая написана только для того чтобы брековаться по return вместо goto.
То есть есть такие операции которые требуют "операций скобок" — открыл -> надо закрыть, записал начало "{" надо записть и конец "}". И так делее.
В этом случае в конце кода действий возникает логика — а открыли мы или нет, и если открыли надо закрыть. И так далее.
Но если применять логику иную — типа создавать объект у которого есть свойсто "открыть" и есть констуктор и есть деструктор то тогда такая логика с проверкой а мы открыли или нет в том же деструкторе выглядит логично. Но если это просто небольшой код, и нет нужды городить обьекты и классы, ну как я уже сказал в ядре например. Где эфективность важнее красоты, а оптимизации от компилятора нет, то пишут вот так — ну не очень красиво, но по привыкнешь — нормально.
N>Понимаю если бы там макросы были, а так...