C标准库参考指南译文系列(8)setjmp.h
来源:互联网 发布:黑客攻击电脑软件 编辑:程序博客网 时间:2024/05/22 05:04
英文原文:http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.8.html
原文作者:Eric Huss
中文译者:柳惊鸿 Poechant
版权声明:本文的原文版权归Eric Huss所有,中文译文版权归Poechant所有。转载请注明来自"柳大的CSDN博客":http://blog.csdn.net/poechant
8. setjmp.h
头文件setjmp用于控制底层调用和函数跳转。
宏:
setjmp();
函数:
longjmp();
变量:
typedef jmp_buf
8.1. 变量和定义
变量jmp_buf是一个数组类型,用于存储setjmp和longjmp信息。
8.2. setjmp
声明:
int setjmp(jmp_buf environment);
存储当前运行环境environment变量中。如果返回一个非零值,则表明longjmp到达了源码中所运行到的位置。否则表明运行环境已被存储。
8.3. longjmp
声明:
void longjmp(jmp_buf environment, int value);
这个函数会使environment恢复调用setjmp时存储的environment值。这个函数时程序掉转到曾调用setjmp处,好像setjmp返回value变量的值一样。变量value的值不回为0。如果传的是0,就用1来代替。如果调用setjmp的函数已经运行终止了,则返回值是不确定的。
实例:
#include<setjmp.h>
#include<stdio.h>
void some_function(jmp_buf);
int main(void)
{
int value;
jmp_buf environment_buffer;
value=setjmp(environment_buffer);
if(value!=0)
{
printf("Reached this point from a longjmp with value=%d.\n",value);
exit(0);
}
printf("Calling function.\n");
some_function(environment_buffer);
return 0;
}
void some_function(jmp_buf env_buf)
{
longjmp(env_buf,5);
}
程序的输出是:
Calling function.
Reached this point from a longjmp with value=5.
该系列译文在持续更新中⋯⋯
C标准库参考指南系列译文(1)assert.h
C标准库参考指南系列译文(2)ctype.h
C标准库参考指南系列译文(3)errno.h
C标准库参考指南系列译文(4)float.h
C标准库参考指南系列译文(5)limits.h
C标准库参考指南系列译文(6)locale.h
C标准库参考指南系列译文(7)math.h
C标准库参考指南系列译文(8)setjmp.h
C标准库参考指南系列译文(9)signal.h
C标准库参考指南系列译文(10)stdarg.h
C标准库参考指南系列译文(11)stddef.h
C标准库参考指南系列译文(12)stdio.h(A)
版权声明:本文的原文版权归Eric Huss所有,中文译文版权归Poechant所有。转载请注明来自"柳大的CSDN博客":http://blog.csdn.net/poechant
-
- C标准库参考指南译文系列(8)setjmp.h
- C标准库参考指南系列译文(12)stdio.h(A)
- C标准库参考指南系列译文(1)assert.h
- C标准库参考指南系列译文(2)ctype.h
- C标准库参考指南系列译文(3)errno.h
- C标准库参考指南系列译文(4)float.h
- C标准库参考指南系列译文(5)limits.h
- C标准库参考指南系列译文(6)locale.h
- C标准库参考指南系列译文(7)math.h
- C标准库参考指南系列译文(9)signal.h
- C标准库参考指南系列译文(10)stdarg.h
- C标准库参考指南系列译文(11)stddef.h
- C标准库参考指南系列译文
- C标准库参考指南(9)signal.h
- C标准库参考指南(2)ctype.h
- C标准库参考指南(9)signal.h
- C标准库参考指南(上)
- C标准库参考指南(下)
- 个人备忘--schema
- Sicily 1155. Can I Post the lette
- 正则表达式 向前查看 和 (? 的用法
- Sicily 1156. Binary tree
- 电子工程师请远离浮躁
- C标准库参考指南译文系列(8)setjmp.h
- 本地音乐播放器MediaPlayer获取所有歌曲信息,getContentResolver()
- 20120205链接
- Sicily 1159. Sum
- drupal7 导入翻译时出错解决方法
- Open Source: 开源软件许可的选择
- printf()格式控制应知小技巧
- UITableView 行自适应高度的实现
- Sicily 1194. Message Flood