setjmp/longjmp函数使用举例

#include <stdio.h>

#include <stdlib.h>

#include <setjmp.h>

 

jmp_buf buf;

 

void banana(int i)

{

       printf("in banana() : ");

      

       switch(i)

       {

       case 1:

              longjmp(buf, 1);

       case 2:

              longjmp(buf, 2);

       case 3:

              longjmp(buf, 3);

       default:

              longjmp(buf, 4);

       }

      

       printf("success!!!!!/n");

}

 

void main()

{

       switch(setjmp(buf))

       {

       case 0:

              break;

       case 1:

              printf("error1 !/n");

              exit(1);

       case 2:

              printf("error2 !/n");

              exit(1);

       case 3:

              printf("error3 !/n");

              exit(1);

       default:

              printf("unexpected error !/n");

              exit(1);

       }

 

       banana(5);

}

你可能感兴趣的:(setjmp/longjmp函数使用举例)