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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
#1

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

03.01.2014, 10:03. Просмотров 1260. Ответов 22
Метки нет (Все метки)

Необходимо при определенном условии выскочить из косвенной рекурсии. Конечно, можно сделать это монструозно, но, полагаю, есть возможность выйти изо всех эти функций безо всяких глобальных переменных и тучи 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++ как выйти из программы
C++ Подключение с помощью директивы #include нескольких функций, находящихся в разных файлах.
C++ Написать набор функций, обслуживающих блочно-диагональные матрицы из нескольких нижне-треугольных блоков
Возвращение из функций нескольких значений C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт CЭксперт С++
6634 / 3825 / 502
Регистрация: 29.11.2010
Сообщений: 10,111
03.01.2014, 15:15     Выйти из нескольких функций #21
Необходимо реализовать логику на предикатах в колбэках.
outoftime
║XLR8║
506 / 428 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
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
C++ Как выйти из оператора if
Работа с файлом из нескольких функций C++

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

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

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

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

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