Отправить управление обратно в файл main.cc в моем проекте C++ из другого файла souce

Можно ли передать управление из другого файла в основной файл, используя оператор GOTO, если да, пожалуйста, сообщите. если это невозможно, пожалуйста, сообщите мне другой метод.

main.cc

{
    outer:                   // label where I want to return 
    callingfunc()
    //control go into calling func
}

source.cc // другой исходный файл с классом

class myclass
{
    public:
    callingfunc();
};

callingfunc()
{
    some code 
    goto outer;               //from here I want to send control to outer label in file **main.cc**
}

1 ответ

Ты можешь только goto метки в той же функции, и очень плохая практика разбивать функцию по исходным файлам (что возможно только в том случае, если #included файл содержит первую часть функции). Чтобы передать выполнение, вы обычно хотите использовать вызовы функций (будь то жестко закодированная функция или функция, идентифицируемая, например, указателем функции или std::function<>) а также return заявления, иногда throw и исключения, и очень очень редко что-то необычное, как setjmp/longjmp (если вам нужно задать этот вопрос, вы не должны играть с этими последними функциями). Вы должны объяснить больше о своей программе - в идеале опубликовать некоторый код - если вам нужен конкретный совет о том, что соответствует вашим потребностям.

Обновление: теперь вы опубликовали некоторый код, вы можете рассмотреть что-то вроде этого...

// source.h
enum Flow { Outer, Continue }; // whatever names make sense to you...
Flow callingfunc();

// main.cc
#include "source.h"
if (callingfunc(...) == Outer) goto outer;

// source.cc
#include "source.h"
Flow callingfunc() { ...; return Outer; ... return Continue; }

Лучше попытаться найти лучшее имя, чем "Outer"... что-то, что сообщает о callingfunc нашел или последующую обработку, которую он рекомендует (например, Timeout, Can_Retry, Model_Unsolvable).

Другие вопросы по тегам