23.10.2015 / 04:00 | |
Jahak Пользователь Сейчас: Offline
Имя: Константин Регистрация: 16.01.2012
| Кто-нибудь может мне объяснить, зачем тут используется цикл do{ #code.. }while(false) ведь он выполнится лишь один раз или я чего-то незнаю? Изменено Jahak (23.10 / 04:02) (всего 1 раз) |
23.10.2015 / 07:33 | |
aRiGaTo Пользователь Сейчас: Offline
Имя: Snork Откуда: Yerevan Регистрация: 03.02.2010
| Jahak, чтобы очистить совесть и не использовать goto. В любой моменты мы можем выйти из этого «цикла» с помощью break. Пример: // инициализация ресурсов
do {
// операции
...
{
// возможно появление ошибки
// откат изменений
break;
}
...
// операции
} while (false)
// освобождение ресурсов
__________________
don't tread on me |
23.10.2015 / 14:00 | |
Jahak Пользователь Сейчас: Offline
Имя: Константин Регистрация: 16.01.2012
| aRiGaTo, Я знаю что такое goto и break, но вопрос не в этом. Я спросил зачем они используют цикл когда можно и без него, ведь разницы в данном случае никакой, что с циклом, что без цикла, результат один и тот же |
23.10.2015 / 14:11 | |
Dimon638 Пользователь Сейчас: Offline
Регистрация: 12.04.2011
| Jahak, Цитата aRiGaTo: Jahak, чтобы очистить совесть и не использовать goto. |
23.10.2015 / 14:54 | |
aRiGaTo Пользователь Сейчас: Offline
Имя: Snork Откуда: Yerevan Регистрация: 03.02.2010
| Jahak, говорю же, чтобы можно было прервать последовательность операций в любом её месте. По-нормальному это выглядит так: defun foo() {
// Инициализация
bar();
// Освобождение ресурсов
}
proc bar() {
// Код
if (caseA) return;
// Код
if (caseB) return;
// Код
}
А do { ... } while (false) использует вообще непонятно кто Видимо жадные до стека вызовов. __________________
don't tread on me |
23.10.2015 / 15:02 | |
Freddy Пользователь Сейчас: Offline
Имя: Игорь Откуда: Воронеж Регистрация: 30.01.2010
| Цитата Jahak: Кто-нибудь может мне объяснить, зачем тут используется цикл do{ #code.. }while(false) ведь он выполнится лишь один раз или я чего-тоЭто трюк того, чтобы при раскрытии макроса получился компилируемый код, когда после вызова макроса стоит точка с запятой в конце. Здесь подробнее можно посмотреть, подраздел "Multi-Statement Macros": https://mikeash.com/pyblog/fri...tips-and-tricks.html |
23.10.2015 / 15:03 | |
Naik Пользователь Сейчас: Offline
Имя: %name% Регистрация: 14.03.2010
| aRiGaTo, я там не нашел ни break, ни continue, может в макросах где-то есть Примерно так хотел сделать goto в трансляторе MB -> Java Изменено Naik (23.10 / 15:05) (всего 2 раза) |
23.10.2015 / 15:10 | |
aRiGaTo Пользователь Сейчас: Offline
Имя: Snork Откуда: Yerevan Регистрация: 03.02.2010
| __________________
don't tread on me |
30.10.2015 / 17:35 | |
Jahak Пользователь Сейчас: Offline
Имя: Константин Регистрация: 16.01.2012
| Выкладываю небольшую стопку книжек по C++ для всех, которую я все еще читаю |
30.10.2015 / 18:00 | |
HeWeD Пользователь Сейчас: Offline
Регистрация: 11.10.2015
| Я школьник. Мне 11 лет, скажите, как выучить ц++? Желательно побыстрее и ничего не делая. Просто, я хочу зделать гта 5 на калькуляторы, а то у меня комп ни тянет. Вот хочется переделать и заработать много денег.
Бан от Ксакеп: Причина: обратиться к сенсею и перестать флудить. |