Jonas Artur Postado Maio 18, 2009 Denunciar Share Postado Maio 18, 2009 (editado) Boa noite.Minha Dúvida é a seguinte:Tem alguma função que eu crie um ponto que posso voltar depois..Um exemplo seria a função "goto", mas o problema é que o goto só volta se for dentro da mesma função, int main por exemplo..Agora, queria saber se tem alguma coisa que eu pegasse dentro de outra função..É melhor eu exemplificar aki... Por exemplo:void cadastro();....int main(){ //variaveis VOLTE_AKI(); //Seria aonde o "cursor" teria que voltar. printf("..."); cadastro(); getch();}void cadastro(){ printf("Simulação de um menu de cadastro e tals"); scan.... agora volte na posição VOLTE_AKI();}Seria mais ou menos isso...Pra constar, uso o Dev-Cpp...Se alguém pudesse me ajudar ficaria muito grato...Vlws.. abraços Editado Novembro 24, 2009 por Jonas Artur Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Maligno Postado Maio 18, 2009 Denunciar Share Postado Maio 18, 2009 O que você quer é impossível em C ou C++. Seja qual for o problema que precise resolver, terá de usar a lógica. Aliás, em C e C++ é sempre desaconselhável usar o comando GOTO. Se você sabe usar a lógica, qualquer problema que seja pode ser resolvido sem usar esses tipos de artifícios. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Durub Postado Maio 18, 2009 Denunciar Share Postado Maio 18, 2009 É possível utilizando-se de long jumps.http://www.cplusplus.com/reference/clibrary/csetjmp/Você vai ter que passar as informações do calling environment (jmp_buf) por aí. Você pode tanto passar como parâmetro na função ou utilizar-se de variáveis globais.Exemplo:#include <stdio.h> #include <setjmp.h> void f(jmp_buf *env); int main(void) { jmp_buf env; setjmp(env); /* "seta" o ponto de torno do longjmp */ f(&env); return 0; /* note que nunca, em uma execução normal, o código chegará até aqui */ } void f(jmp_buf *env) { printf("Teste\n"); longjmp(env, 0); /* vai para o local aonde foi chamado o setjmp */ }Abraços. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Maligno Postado Maio 19, 2009 Denunciar Share Postado Maio 19, 2009 (editado) Minhas desculpas ao colega. Vi isso há tanto tempo que me esqueci completamente. Mas pudera. Jamais usaria um recurso desses. A exemplo do GOTO, é uma tremenda gambiarra. Aliás, se alguém um dia pretender uma vaga no mercado de trabalho com C ou C++, não use nada do tipo num provável teste de aptidão. Se usar, com certeza será descartado. Editado Maio 19, 2009 por Maligno Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Jonas Artur
Boa noite.
Minha Dúvida é a seguinte:
Tem alguma função que eu crie um ponto que posso voltar depois..
Um exemplo seria a função "goto", mas o problema é que o goto só volta se for dentro da mesma função, int main por exemplo..
Agora, queria saber se tem alguma coisa que eu pegasse dentro de outra função..
É melhor eu exemplificar aki...
Por exemplo:
void cadastro();
..
..
int main()
{
//variaveis
VOLTE_AKI(); //Seria aonde o "cursor" teria que voltar.
printf("...");
cadastro();
getch();
}
void cadastro()
{
printf("Simulação de um menu de cadastro e tals");
scan....
agora volte na posição VOLTE_AKI();
}
Seria mais ou menos isso...
Pra constar, uso o Dev-Cpp...
Se alguém pudesse me ajudar ficaria muito grato...
Vlws.. abraços
Editado por Jonas ArturLink para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.