* main.c
*
* Created on: Oct 29, 2010
* Author: jenson
*/
#include <setjmp.h>
#include <stdio.h>
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值。