#include<string.h>
#include<stdio.h>
#include<setjmp.h>
static jmp_buf buf;
void process()
{
char input[10];
printf("==== In process ====\n");
scanf("%s",&input);
printf("input is %s \n",input);
getchar();
if(0==strcmp(input,"redo"))
longjmp(buf,1);
else if(0==strcmp(input,"exit"))
{
printf("In process: need exit with error \n");
longjmp(buf,2);
}
else
printf("In process: normal \n");
}
int main()
{
while(1)
{
switch (setjmp(buf))
{
case 0:process();
printf("0: main normal return\n");
return 0;
case 1:
printf("1: process re do\n");
break;
case 2:printf("2:main return with error\n");
return -2;
default:
printf("error default\n");
return -1;
}
}
return 0;
}/*redonormalexit*/
#include#include#includestatic jmp_buf buf;void process(){char input[10];printf("==== In process ====\n");scanf("%s",&input);printf("input is %s \n",input);getchar();if(0==strcmp(input,"redo"))longjmp(buf,1);else if(0==strcmp(input,"exit")){printf("In process: need exit with error \n");longjmp(buf,2);}elseprintf("In process: normal \n");}int main(){while(1){switch (setjmp(buf)){case 0:process();printf("0: main normal return\n");return 0;case 1:printf("1: process re do\n");break;case 2:printf("2:main return with error\n");return -2;default:printf("error default\n");return -1;}}return 0;}/*redonormalexit*/不好意思之前不知怎么代码乱了现在改好了