Отправить управление обратно в файл 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
метки в той же функции, и очень плохая практика разбивать функцию по исходным файлам (что возможно только в том случае, если #include
d файл содержит первую часть функции). Чтобы передать выполнение, вы обычно хотите использовать вызовы функций (будь то жестко закодированная функция или функция, идентифицируемая, например, указателем функции или 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
).