非局部跳转语句---setjmp和longjmp函数

来源:互联网 发布:it招投标 编辑:程序博客网 时间:2024/06/04 18:12

1. C语言异常检测实现基础知识

setJmp() , longjmp()

非局部跳转语句—setjmp和longjmp函数

非局部指的是,这不是由普通C语言goto,语句在一个函数内实施的跳转,而是在栈上跳过若干调用帧,返回到当前函数调用路径上的某一个函数中。

/* setjmp example: error handling */#include <stdio.h>    #include <stdlib.h>    #include <setjmp.h>     /* jmp_buf 数据类型, setjmp, longjmp */int main(){  jmp_buf env;  int val;  val = setjmp (env);  if (val) {    fprintf (stderr,"Error %d happened",val);    exit (val);  }  longjmp (env,101);   /* signaling an error */  return 0;}/*这个程序利用setjmp 设置捕捉点,然后会被longjmp调用来通知这些错误输出:Error 101 happened*/
0 0
原创粉丝点击