英文原文: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.
该系列译文在持续更新中⋯⋯
版权声明:本文的原文版权归Eric Huss所有,中文译文版权归Poechant所有。转载请注明来自"柳大的CSDN博客":http://blog.csdn.net/poechant
-
分享到:
相关推荐
C标准库源代码\CSETJMP C标准库源代码\CSIGNAL C标准库源代码\CSTDARG C 标准库源代码\CSTDDEF C标准库源代码\CSTDIO C标准库源代码\CSTDLIB C标准库源代码\CSTRING C 标准库源代码\CTIME C标准库源代码\CTIME.C C...
C语言异常处理setjmp.pdf
C signal.h errno.h netdb.h setjmp.h signal.h string.hC signal.h errno.h netdb.h setjmp.h signal.h string.hC signal.h errno.h netdb.h setjmp.h signal.h string.h
C语言函数库,包含 C 标准库、IO 函数、字符处理函数、字符串函数、数学函数、时间和日期函数、其它函数等数百个常用的C语言函数,文档中对常用函数库的函数原型、详细功能、使用示例等进行了详细的介绍说明,。...
本文包括大部分C标准库函数...8 非局部跳转 <setjmp.h> . . . . . . . . . . 45 9 信号处理 <signal.h> . . . . . 46 10 日期与时间函数 <time.h> . . . . 48 11 由实现定义的限制 <limits.h> 和 <float.h> . . . 52
* <setjmp.h> : Non-local Jumps * <signal.h> : Signals * <stdarg.h> : Variable Argument Lists * <stddef.h> : Definitions of General Use * <stdio.h> : Input and Output * <stdlib.h> : Utility ...
#include <setjmp.h> #include <signal.h> #include <sys/time.h> #include <sys/types.h> #include <sys/wait.h> #include <sys/stat.h> #include <fcntl.h> #include <sys/mman.h> #include <errno.h> #include ...
│ setjmp.h │ setupapi.h │ share.h │ shellapi.h │ shldisp.h │ shlguid.h │ shlobj.h │ shlwapi.h │ shobjidl.h │ signal.h │ snmp.h │ specstrings.h │ sql.h │ sqlext.h │ sqltypes.h │ ...
英文版C语言标准库,Word文档 Contents • <assert.h> : Diagnostics • <ctype.h> : Character Class Tests • <errno.h> : Error Codes Reported by (Some) Library Functions • <float.h> : Implementation-...
ISO C标准定义的头文件(24项) <assert.h> 验证程序断言 <complex.h> 支持复数算术运算 <ctype.h> 字符类型 <errno.h> 出错码 <fenv.h> 浮点环境 <float.h> 浮点常量 <inttypes.h> 整型格式转换 ...
7.8.7 随机数发生器函数 第8章 UNIX系统界面 ...B.8 非局部跳转:<setjmp.h> B.9 信号处理:<signal.h> B.10 日期与时间函数:<time.h> B.11 由实现定义的限制:<limits.h>和 <float.h> 附录C 变更小结
avr的gcc的lib库函数的使用手册,是嵌入式工具链的重要环节
目 录 译者序 序 第1版序 前言 第1章 基本概念 ...B.8 非局部跳转:<setjmp.h> B.9 信号处理:<signal.h> B.10 日期与时间函数:<time.h> B.11 由实现定义的限制:<limits.h>和 <float.h> 附录C 变更小结
The C Library Reference Guide by Eric Huss © Copyright 1997 Eric Huss Introduction 1. Language 1.1 Characters 1.1.1 Trigraph Characters 1.1.2 Escape Sequences 1.1.3 Comments 1.2 Identifiers ...
setjmp和longjmp是C语言独有的,只有将它们结合起来使用,才能达到程序控制流有效转移的目的,按照程序员的预先设计的意图,去实现对程序中可能出现的异常进行集中处理。 先来看一下这两个函数的定义吧: setjmp和...
C语言头文件 SETJMPC语言头文件 SETJMPC语言头文件 SETJMPC语言头文件 SETJMPC语言头文件 SETJMPC语言头文件 SETJMPC语言头文件 SETJMPC语言头文件 SETJMPC语言头文件 SETJMPC语言头文件 SETJMPC语言头文件 SETJMPC...
《多线程编程指南》介绍了SolarisTM操(SolarisOperatingSystem,SolarisOS中 POSIX®线程和Solaris线程的多线程编程接口。本指南将指导应用程序程序员如何创建新的多线程程序以及如何向现有的程序中添加多线程。尽管...
The C programming Language ...Non-local Jumps: <setjmp.h> Signals: <signal.h> Date and Time Functions: <time.h> Implementation-defined Limits: <limits.h> and <float.h> Appendix C: Summary of Changes
花了我将近一年 才从众多 c语言教程书 中筛选出来的精品 ...B.8 非局部跳转:<setjmp.h> B.9 信号处理:<signal.h> B.10 日期与时间函数:<time.h> B.11 由实现定义的限制:<limits.h>和 <float.h> 附录C 变更小结