| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > глобальные метки |
| Автор: Curiosa 13.1.2010, 18:30 |
| Есть ли такие, как их объявлять? |
| Автор: zim22 13.1.2010, 18:50 |
| а локальные метки есть? |
| Автор: GoldFinch 13.1.2010, 19:06 |
| глобальных нету - только внутри функции используй пустую функцию как глобальную метку ;) (с умом используй) |
| Автор: Curiosa 13.1.2010, 20:41 |
| Если я использую функцию, то после "пророботки" она вернется в точку вызова, а мне нужно в main ;) |
| Автор: djamshud 14.1.2010, 01:43 |
| Curiosa, после проработки кидайте особое исключение и ловите его в main. Но вообще странное желение какое-то). Еще есть сишный longjmp: http://www.opennet.ru/man.shtml?topic=longjmp&russian=0&category=&submit=%F0%CF%CB%C1%DA%C1%D4%D8+man Вот только в одних источниках говорится, что он соответствует аж стандарту C89, а в других - только POSIX. Кому верить, не знаю. Добавлено через 2 минуты и 4 секунды Так же у longjmp под большим вопросом (в случае использования с++), нормально ли переживут такой скачок многие из объектов. |
| Автор: Alek86 14.1.2010, 11:34 |
| если очень надо, для этого можно использовать исключения но уверен, что ты просто неправильно решаешь задачу |
| Автор: baldina 14.1.2010, 12:00 |
| Curiosa, глобальных меток нет и тому есть несколько причин: 1. Переход на адрес внутри другой функции не является корректным, т.к. стек отражает состояние текущей функции. в стеке адреса возвратов и локальные переменные. 2. В языке имеется достаточно других средств управления ходом программы. 3. Желание прыгнуть за пределы функции чаще всего говорит о неправильном проектировании алгоритма и вносит в проект лишние сильные связи. Иными словами, немного подумав и изменив алгоритм, получим более простую, ясную и логичную программу. Есть, как уже сказали, два способа изменить ход программы, передав управление в иную функцию - setjmp\longjmp и исключения. Первое вполне справляется с установкой указателя стека, но объекты при этом не разрушаются корректным образом. Второе (исключения) аккуратно вызывает деструкторы всех локальных объектов, хранящихся в стеке. Так что технически возможно, практически - скорее всего неправильно. Задачу в студию, подумаем, подскажем. |
| Автор: Curiosa 15.1.2010, 16:51 |
| Задача: поиск в глубину. Проблема возникла из-за рекурсии. Т.е там где управление должно было переходить в main, осуществлялось углубление. Сделала так: поставила флаг на выход) Спасибо за ответы |
| Автор: baldina 15.1.2010, 18:14 | ||
Что-то в этом роде. Метки не нужны. |
| Автор: Curiosa 15.1.2010, 23:53 |
Я именно циклы искала ;] |
| Автор: baldina 15.1.2010, 23:59 |
| с циклами Вам потребуется помечать вершины - пройдена или нет. посмотрите http://ru.wikipedia.org/wiki/Поиск_в_глубину здесь алгоритм в общем виде, с рекурсией и без меток |