<setjmp.h>非局部跳转(来自C语言程序设计--现代方法第二版)
来源:互联网 发布:js touchend 触发多次 编辑:程序博客网 时间:2024/05/22 02:10
int setjmp(jmp_buf env);void longjmp(jmp_buf env, int val);
<setjmp.h>可以使得一个函数直接跳转到另一个函数,而不需要返回。
setjmp宏“标记”程序中的一个位置;随后可以使用longjmp跳转到该位置。
注意:setjmp会在第一次调用时返回0;随后,longjmp将控制权重新转给最初的setjmp宏调用,而setjmp在这次调用时会返回一个非零值。
例子:
#include <stdio.h>#include <stdlib.h>#include <setjmp.h>jmp_buf env;void f1(void);void f2(void);int main(void){ if ( setjmp(env) == 0) { printf("setjmp returned 0\n"); } else { printf("Program terminates: longjmp called\n"); return 0; } f1(); printf("Program termintaes normally\n");exit(EXIT_SUCCESS);}void f1(void){ printf("f1 begins\n"); f2(); printf("f1 returns\n");}void f2(void){ printf("f2 begins\n"); longjmp(env, 1); printf("f2 returns\n");}
- <setjmp.h>非局部跳转(来自C语言程序设计--现代方法第二版)
- 非局部跳转 setjmp
- C标准库学习之<setjmp.h> ——非局部跳转
- C语言学习:非局部跳转setjmp.h中的几个重要函数
- 【C】初学习之错误处理——非局部跳转<setjmp.h>
- 《C语言程序设计现代方法第二版》笔记(Part.1)
- 《C语言程序设计现代方法第二版》笔记Part.2
- C语言程序设计现代方法(第二版)_______第二、三、四章编程题部分
- setjmp longjmp 非局部跳转
- 【setjmp和longjmp 】 C语言的非局部跳转:setjmp和longjmp(跨函数长跳转)
- C语言程序设计现代方法第二版基础部分读书笔记(【美】K.N.King 著)
- 浅析C语言的非局部跳转:setjmp和longjmp
- (C)非局部跳转语句(setjmp和longjmp)
- C语言的非局部跳转:setjmp和longjmp
- 浅析C语言的非局部跳转:setjmp和longjmp
- 浅析C语言的非局部跳转:setjmp和longjmp
- 浅析C语言的非局部跳转:setjmp和longjmp
- C语言程序设计:现代方法
- Boost在linux中编译
- python学习之二——控制语句
- XmlDocument中的空格换行节点去除问题。
- Uboot_移植_记录_/*嵌入式学习*/
- 深入分析MFC 文档视图结构一
- <setjmp.h>非局部跳转(来自C语言程序设计--现代方法第二版)
- VC++ 6.0下对配置设置文件的存取访问
- ABAP/4中参数的传递
- C、C++易错知识点杂记(4)
- Linux头文件中s3c2410 GPIO的宏
- activex npapi
- win7下使用VMware安装RedHat Linux 9.0 详细图解
- AssertValid()与Dump()函数
- inline内联函数(声明前加inline还是定义前加inline)