C语言中的跳转函数

/*
* main.c
*
*Created on: Oct 29, 2010
*Author: jenson
*/

#include
#include

jmp_buf ebuf;
void fun(void);
int main(){

int i;
printf("1 ");
i = setjmp(ebuf);
if(i == 0){
fun();
printf("this will not be printed.\n");
}
printf("%d\n",i);
return 0;
}

void fun(void){
printf("3 ");
longjmp(ebuf,5);
}

宏函数setjmp在缓冲区ebuf中保存了系统堆栈内容,以供函数longjmp以后使用。调用宏函数setjmp时,返回值为零。然后函数longjmp把一个变元传递给setjmp()函数,该值(恒为非零)就是调用longjmp后出现的setjmp值。
【C语言中的跳转函数】转载于:https://blog.51cto.com/wujuxiang/412509

    推荐阅读