Форум программистов, компьютерный форум CyberForum.ru

Выйти из нескольких функций - C++

Восстановить пароль Регистрация
 
 
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
03.01.2014, 10:03     Выйти из нескольких функций #1
Необходимо при определенном условии выскочить из косвенной рекурсии. Конечно, можно сделать это монструозно, но, полагаю, есть возможность выйти изо всех эти функций безо всяких глобальных переменных и тучи if при каждом косвенном вызове на проверку этого глобального флага?
Исключения использовать нельзя.

Я бы сделал это через goto, но насколько это правильно? Разворачивает ли goto стэк? Мне кажется, что нет.. Но может я ошибаюсь?

Так бы это выглядело с goto:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void f1()
{
f2();
}
void f2()
{
if (..)
goto HERE;
f1();
}
int main()
{
f1();
HERE:
doSomethingElse();
}

Не по теме:

Пожалуйста, не надо кричать "использование goto = быдло код"..

Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.01.2014, 10:03     Выйти из нескольких функций
Посмотрите здесь:

Выйти из goto. C++
C++ Функция, в функции main() или общие переменные для нескольких функций
Решение задачи с применением нескольких функций C++
C++ Подключение с помощью директивы #include нескольких функций, находящихся в разных файлах.
C++ Написать набор функций, обслуживающих блочно-диагональные матрицы из нескольких нижне-треугольных блоков
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,402
03.01.2014, 15:15     Выйти из нескольких функций #21
Необходимо реализовать логику на предикатах в колбэках.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
03.01.2014, 17:52     Выйти из нескольких функций #22
Ппц, начинаем думать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
void f1()
{
    f2();
}
void f2()
{
    if (..)
    goto HERE;
    f1();
}
int main()
{
    f1();
    HERE:
    doSomethingElse();
}
 
// equal to
 
void bar()
{
    foo();
}
 
void foo()
{
    if (true) return;
    bar();
}
Это в случае если функции действительно без возвращаемых значений.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.01.2014, 18:17     Выйти из нескольких функций
Еще ссылки по теме:

Возвращение из функций нескольких значений C++
C++ Программирование задач с использованием нескольких функций
C++ Объявление нескольких функций в head.h

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Nfnehtdbx2
0 / 0 / 0
Регистрация: 25.12.2013
Сообщений: 7
03.01.2014, 18:17     Выйти из нескольких функций #23
а break не пробовали?

Добавлено через 1 минуту
Ну или применить алгоритм метки
label1:
label2:
...
это позволяет выйти из многовкладенных циклов по условию

Добавлено через 4 минуты
Опыт это не имя которое дано ошибкам
Есть люди ошибаются на одном и том же 1000 раз и не понимают... вот тут то!
именно понимают!
опыт это то что человек понял и реализовал
Yandex
Объявления
03.01.2014, 18:17     Выйти из нескольких функций
Ответ Создать тему
Опции темы

Текущее время: 14:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru