首页 Soft PlugIn RAN乱 Dev开发 Info资料 English WAP 留言 登陆 注册
-
Posted by Yippee | 评论(0) | 引用(0) | 阅读1720次
µC/OS-II UCOSII学习笔记4

setjmp(PC_JumpBuf);                                    /* Capture where we are in DOS              */

#define __SETJMP_H www.shengfang.org

#if !defined(___DEFS_H)
#include <_defs.h>
#endif

typedef struct __jmp_buf {
    unsigned    j_sp;
    unsigned    j_ss;
    unsigned    j_flag; www.shengfang.org
    unsigned    j_cs;
    unsigned    j_ip;
    unsigned    j_bp;
    unsigned    j_di;
    unsigned    j_es;
    unsigned    j_si;
    unsigned    j_ds;
}   jmp_buf[1];

#ifdef __cplusplus
extern "C" {
#endif

#if !defined( _Windows )
void    _CType longjmp(jmp_buf __jmpb, int __retval);
int     _CType setjmp(jmp_buf __jmpb);
#else
void far pascal longjmp( struct __jmp_buf far *__jmpb, int __retval );
int far pascal setjmp( struct __jmp_buf far *__jmpb);
#endif

#ifdef __cplusplus
}
#endif

#endif 这是BC31里面的定义

#include <stdio.h>
#include <dos.h>
#include <setjmp.h>
jmp_buf ebuf;
void f2(void);
int main(void)
{
int i;
printf("1");
i=setjmp(ebuf);
if(i==0)
{
f2();
printf("This will not be printed.");
}
printf("%d",i);
getchar();
return 0; www.shengfang.org
}
void f2(void)
{
printf("2");
longjmp(ebuf,3); www.shengfang.org
} 打印出来是123,就是说longjmp又跳回i=setjmp(ebuf);,结果I=3

Setjmp是标准C语言库函数的组成部分,它可以实现程序执行中的远程转操作。具体来说,它可以在一个函数中使用setjmp来初始化一个全局标号,然后只要该函数未曾返回,那么在其它任何地方都可以通过longjmp调用来跳转到setjmp的下一条语句执行。实际上,setjmp函数将发生调用处的局部环境保存在一个jmp_buf的结构当中,只要主调函数中对应的内存未曾释放(函数返回时局部内存就失效了),那么在调用longjmp的时候就可以根据已保存的jmp_buf参数恢复到setjmp的地方执行。

尊敬的用户:
   您好!
由于服务器上有好些域名还没有备案,导致服务器被有关部门暂停开放,我们已经和有关部门协商尽快开放服务器,敬请原谅!
请还没有备案的域名尽快去信产部备案,以免这种情况再次发生,谢谢合作!!


字体:

Permanant URI永久地址 http://www.shengfang.org/blog/p/ucosii4xxSETJMP.php
Trackback URI引用地址 http://www.shengfang.org/blog/tb.php?tb_id=1122606662

2005年7月29日11:11星期五  [Dev开发] 追踪此文的RSS
提示:
此文还没有评论。

称呼:    登陆   注册
   不注册,但记住我的信息
邮件:
(非必须)
评论: [UBB代码帮助]
粗体 斜体 下划线 链接 水平线 引用



验证码: 请输入你看见的数字
关闭UBB      提交时自动将内容复制到剪贴板

公告
Fire and Motion!

统计信息
[Yippee]||[统计]||日志:1858
在线: 11||用户: 2577 [列表]
今日:405||到访:2886469
Rss:897749||评论:1605

最新日志

最新评论

友情链接

日历
2008 - 08
     12
3456789
10111213141516
17181920212223
24252627282930
31      

最新引用

搜索

归档

杂项
Get RSS Feed (Version 2.0)
Get Atom Feed (Version 0.3)
编码:  UTF-8