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

Возврат в функцию - C++

Восстановить пароль Регистрация
 
DanilStudent
0 / 0 / 0
Регистрация: 30.05.2013
Сообщений: 19
08.06.2013, 17:53     Возврат в функцию #1
Как сделать так, чтобы когда функция выполнилась, она вернула управление не в точку, из которой вызывалась, а в начало вызывающей функции?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2013, 17:53     Возврат в функцию
Посмотрите здесь:

C++ Возврат объекта с полями-массивами в функцию
C++ Возврат функцией указателя на функцию
Возврат ссылки на функцию. C++
возврат вектора из ф-ии C++
возврат C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ksandro
31 / 31 / 1
Регистрация: 15.04.2011
Сообщений: 81
08.06.2013, 18:11     Возврат в функцию #2
Так сделать нельзя. Функция всегда возвращается в точку из которой была вызвана.
Возможно тебе надо сделать рекурсивный вызов функции (вызов функцией самой себя) или просто использовать цикл.

Опиши подробнее задачу, для чего тебе это нужно?
Dr_Quake
Заблокирован
08.06.2013, 18:21     Возврат в функцию #3
Да вообще-то легко можно, только это будет уже не C++, а солянка хренова, реализация GOTO на асме достаточно проста, но как бы GOTO - прямая дорога в ад.
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
08.06.2013, 18:23     Возврат в функцию #4
В конце функции вызывай вызывающую функцию.
DanilStudent
0 / 0 / 0
Регистрация: 30.05.2013
Сообщений: 19
08.06.2013, 18:26  [ТС]     Возврат в функцию #5
А, зря панику развел, всё понял, там нужно с помощью цикла бесконечного.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11847 / 6826 / 771
Регистрация: 27.09.2012
Сообщений: 16,928
Записей в блоге: 2
Завершенные тесты: 1
08.06.2013, 18:41     Возврат в функцию #6
Можно поиграться с Си'шными прыжками (longjump), но подобное поведение в контексте C++ настораживает...да и в Си тоже

Добавлено через 13 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <stdio.h>
#include <setjmp.h>
 
jmp_buf env;
 
void newfunction(){
    longjmp(env, 1);
}
 
int main(){
    std::cout<<"New function start"<<std::endl;
    int retval=setjmp(env);
    std::cout<<"New function end"<<std::endl;
    if (!retval) 
        newfunction();
    return 0;
}
Yandex
Объявления
08.06.2013, 18:41     Возврат в функцию
Ответ Создать тему
Опции темы

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