`
Poechant
  • 浏览: 213180 次
博客专栏
Bebe66e7-3a30-3fc9-aeea-cfa3b474b591
Nginx高性能Web服务...
浏览量:23553
5738817b-23a1-3a32-86de-632d7da73b1e
Cumulus实时媒体服务...
浏览量:21455
社区版块
存档分类
最新评论

C标准库参考指南译文系列(8)setjmp.h

 
阅读更多

英文原文: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是一个数组类型,用于存储setjmplongjmp信息。


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标准库源代码(学习C/C++必备)

    C标准库源代码\CSETJMP C标准库源代码\CSIGNAL C标准库源代码\CSTDARG C 标准库源代码\CSTDDEF C标准库源代码\CSTDIO C标准库源代码\CSTDLIB C标准库源代码\CSTRING C 标准库源代码\CTIME C标准库源代码\CTIME.C C...

    C语言异常处理setjmp.pdf

    C语言异常处理setjmp.pdf

    C语言编程 多个常用头文件源代码

    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语言函数库详解.doc

    C语言函数库,包含 C 标准库、IO 函数、字符处理函数、字符串函数、数学函数、时间和日期函数、其它函数等数百个常用的C语言函数,文档中对常用函数库的函数原型、详细功能、使用示例等进行了详细的介绍说明,。...

    C标准库函数集.rar

    本文包括大部分C标准库函数...8 非局部跳转 &lt;setjmp.h&gt; . . . . . . . . . . 45 9 信号处理 &lt;signal.h&gt; . . . . . 46 10 日期与时间函数 &lt;time.h&gt; . . . . 48 11 由实现定义的限制 &lt;limits.h&gt; 和 &lt;float.h&gt; . . . 52

    C标准库文档,包括标准库中12个头文件的描述

    * &lt;setjmp.h&gt; : Non-local Jumps * &lt;signal.h&gt; : Signals * &lt;stdarg.h&gt; : Variable Argument Lists * &lt;stddef.h&gt; : Definitions of General Use * &lt;stdio.h&gt; : Input and Output * &lt;stdlib.h&gt; : Utility ...

    csapp_深入理解计算机系统_相关文件_csapp.h_csapp.c

    #include &lt;setjmp.h&gt; #include &lt;signal.h&gt; #include &lt;sys/time.h&gt; #include &lt;sys/types.h&gt; #include &lt;sys/wait.h&gt; #include &lt;sys/stat.h&gt; #include &lt;fcntl.h&gt; #include &lt;sys/mman.h&gt; #include &lt;errno.h&gt; #include ...

    MinGW最新版5.0.X

    │ 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_Standar_Library

    英文版C语言标准库,Word文档 Contents • &lt;assert.h&gt; : Diagnostics • &lt;ctype.h&gt; : Character Class Tests • &lt;errno.h&gt; : Error Codes Reported by (Some) Library Functions • &lt;float.h&gt; : Implementation-...

    C语言头文件大全

    ISO C标准定义的头文件(24项) &lt;assert.h&gt; 验证程序断言 &lt;complex.h&gt; 支持复数算术运算 &lt;ctype.h&gt; 字符类型 &lt;errno.h&gt; 出错码 &lt;fenv.h&gt; 浮点环境 &lt;float.h&gt; 浮点常量 &lt;inttypes.h&gt; 整型格式转换 ...

    C语言基础教程TXT

    7.8.7 随机数发生器函数 第8章 UNIX系统界面 ...B.8 非局部跳转:&lt;setjmp.h&gt; B.9 信号处理:&lt;signal.h&gt; B.10 日期与时间函数:&lt;time.h&gt; B.11 由实现定义的限制:&lt;limits.h&gt;和 &lt;float.h&gt; 附录C 变更小结

    avr-libc-user-manual-1.6.1.rar_avr setjmp.lib_avr-li_avr-libc ma

    avr的gcc的lib库函数的使用手册,是嵌入式工具链的重要环节

    c语言设计Brian W. Kernighan Dennis M. Ritchie

    目 录 译者序 序 第1版序 前言 第1章 基本概念 ...B.8 非局部跳转:&lt;setjmp.h&gt; B.9 信号处理:&lt;signal.h&gt; B.10 日期与时间函数:&lt;time.h&gt; B.11 由实现定义的限制:&lt;limits.h&gt;和 &lt;float.h&gt; 附录C 变更小结

    C标准库函数.CHM

    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 ...

    浅析C语言中的setjmp与longjmp函数

    setjmp和longjmp是C语言独有的,只有将它们结合起来使用,才能达到程序控制流有效转移的目的,按照程序员的预先设计的意图,去实现对程序中可能出现的异常进行集中处理。 先来看一下这两个函数的定义吧: setjmp和...

    C语言头文件 SETJMP

    C语言头文件 SETJMPC语言头文件 SETJMPC语言头文件 SETJMPC语言头文件 SETJMPC语言头文件 SETJMPC语言头文件 SETJMPC语言头文件 SETJMPC语言头文件 SETJMPC语言头文件 SETJMPC语言头文件 SETJMPC语言头文件 SETJMPC...

    Solaris链接程序和库指南

    《多线程编程指南》介绍了SolarisTM操(SolarisOperatingSystem,SolarisOS中 POSIX®线程和Solaris线程的多线程编程接口。本指南将指导应用程序程序员如何创建新的多线程程序以及如何向现有的程序中添加多线程。尽管...

    The C programming Language(chm格式完整版)

    The C programming Language ...Non-local Jumps: &lt;setjmp.h&gt; Signals: &lt;signal.h&gt; Date and Time Functions: &lt;time.h&gt; Implementation-defined Limits: &lt;limits.h&gt; and &lt;float.h&gt; Appendix C: Summary of Changes

    c程序设计语言入门基础 @精品@ 花我一年才从众书中筛选出的

    花了我将近一年 才从众多 c语言教程书 中筛选出来的精品 ...B.8 非局部跳转:&lt;setjmp.h&gt; B.9 信号处理:&lt;signal.h&gt; B.10 日期与时间函数:&lt;time.h&gt; B.11 由实现定义的限制:&lt;limits.h&gt;和 &lt;float.h&gt; 附录C 变更小结

Global site tag (gtag.js) - Google Analytics