当前位置:嗨网首页>书籍在线阅读

42-非本地跳转_setjmp.h

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

B.5.11 非本地跳转: setjmp.h

setjmp.h 头文件可以让你不遵循通常的函数调用、函数返回顺序。 setjmp() 函数把当前执行环境的信息(例如,指向当前指令的指针)存储在 jmp_buf 类型(定义在 setjmp.h 头文件中的数组类型)的变量中,然后 longjmp() 函数把执行转至这个环境中。这些函数主要是用来处理错误条件,并不是通常程序流控制的一部分。表B.5.17列出了这些函数。

表B.5.17  `setjmp.h` 中的函数

| 原型 | 描述 | | :----- | :----- | :----- | :----- | | int setjmp(jmp_buf env); | 把调用环境存储在数组 env 中,如果是直接调用,则返回 0 ;如果是通过 longjmp() 调用,则返回非 0 | | void longjmp(jmp_buf env, | int val); | 恢复最近的 setjmp() 调用(设置 env 数组)存储的环境;完成后,程序继续像调用 setjmp() 那样执行该函数,返回 val (但是该函数不允许返回 0 ,会将其转换成 1 ) |