setjmp函数和longjmp函数
来源:互联网 发布:python简明教程 下载 编辑:程序博客网 时间:2024/05/18 11:50
setjmp和longjmp的函数原型在setjmp.h中。
函数原型:
int setjmp(jmp_buf envbuf);
setjmp函数用缓冲区envbuf保存系统堆栈的内容,以便后续的longjmp函数使用。setjmp函数初次启用时返回0值。
void longjmp(jmp_buf envbuf, int val);
longjmp函数中的参数envbuf是由setjmp函数所保存的堆栈环境,参数val设置setjmp函数的返回值。longjmp函数本身是没有返回值的,它执行后跳转到保存envbuf参数的setjmp函数调用,并由setjmp函数调用返回,此时setjmp函数的返回值就是val。
调用longjmp函数时不能使setjmp函数返回0,如果val为0,则setjmp函数返回1。longjmp函数从来不返回,因为它调用后就跳转到setjmp函数保存的堆栈处,恢复堆栈开始执行,所以longjmp函数不会返回。
setjmp和longjmp函数使用示例:
#include <stdio.h>
#include <setjmp.h>
static jmp_buf buf;
int main()
{
int b;
b = 3;
if (setjmp(buf) != 0)
{
printf("b=%d/n", b);
return 0;
}
b = 5;
longjmp(buf, 1);
return 0;
}
setjmp执行时返回0,执行b等于5,调用longjmp,跳转到setjmp调用,setjmp返回1,打印b=5。
- setjmp和longjmp函数
- setjmp 和 longjmp 函数
- setjmp和longjmp函数
- setjmp和longjmp函数
- setjmp和longjmp函数
- setjmp和longjmp函数
- setjmp和longjmp函数
- setjmp和longjmp函数
- setjmp和longjmp函数
- 函数setjmp和longjmp
- setjmp函数和longjmp函数
- setjmp函数和longjmp函数
- linux setjmp和longjmp函数
- setjmp和longjmp函数使用方法
- setjmp和longjmp函数简介
- setjmp()和longjmp()函数详解
- linux的setjmp函数和longjmp函数
- setjmp和longjmp函数使用详解
- Latex浮动体控制
- 银行网络安全现状及要求措施建议
- 怎样设置svn中不同文件夹的权限
- 使用rebase进行dll基地址重定位
- u-boot点滴
- setjmp函数和longjmp函数
- QT项目
- Java ClassLoader深入研究
- ModifyStyle函数的用法
- “反演”是什么?
- 在页面显示年月日和具体时间
- DefaultTableModel
- .net中应用程序域的概念
- 转:NetWeaver Development Infrastructure (DI) Architecture - NWDI