这一篇暂时不掌握
#include<stdio.h>
#include<stdlib.h>
#include<setjmp.h>
/* @作用: 1:C语言中不能使用goto跳转到另一个函数中的具体某处;\ 但提供了两个函数——setjmp 和 longjmp可以提转到任意程序的任意位置 2:通常作为异常处理机制! @结构体jmp_buf @setjmp()与longjmp()的使用 --> 通俗解释:先调用setjmp(),set_buf记录当前的位置,\ 再调用longjmp,返回envbuf所记录的位置\ //第一次setjmp()返回值=0 //第一次后的setimp()返回值 = longjmp(buf,参数2)的参数2 */
//例:
jmp_buf buf; //创建jmp_buf结构体变量
void Func()
{
if (setjmp(buf)!=0) //第一次入栈返回值为0;
{
printf("执行异常程序!\n");
exit (0);
}
}
void SETJMP()
{
Func(); //主函数运行异常执行程序,保存执行程序SP等状态的堆栈
//正常执行程序
printf("异常发生\n"); //如果程序发生了异常
longjmp(buf, 1); //异常执行程序出栈,跳转执行异常执行程序!
//注意:用exit (0) 结束程序!
}