#include <stdio.h>
#include <setjmp.h>
jmp_buf env1;
int func(void);
int main(int argc, const char *argv[])
{
int ret = 0;
printf("Before setjmp.\n");
// 保存当前的环境变量,longjmp 依赖此环境变量进行跳转
// 此函数的返回值,非跳转时,返回值为0,当对方跳转来,
// 返回值为longjmp的参数
ret = setjmp(env1);
if(ret == 0)
{
func();
}
else
{
printf("+++++++++, ret = %d\n", ret);
}
printf("After setjmp.\n");
return 0;
}
int func(void)
{
printf("In func.\n");
//完成程序的跳转,具有全局的作用范围,函数之间,文件之间,线程与线程之间
longjmp(env1, 3);
return 0;
}