if else 同时执行 && setjmp和longjmp
2011-06-26 16:39
239 查看
正常情况下,if..else只能执行其中一个,因为如果判断的条件为真,则执行if里面的语句,如果判断为假,则执行else里面的语句。
那怎样能让if和else里面的语句都执行呢?
看看下面的代码吧^^
这个是利用C语言的goto实现的。
再看看下面这段代码吧:^^
看不懂?^^其实一接触我也不知道为什么
在《C专家编程》第128页有说:
功能: 函数将系统栈保存于envbuf中,以供以后调用longjmp()。当第一次调用setjmp(),它的返回值为零。之后调用longjmp(),longjmp()的第二个参数即为setjmp()的返回值。
功能: 函数使程序从前次对setjmp()的调用处继续执行。参数envbuf一般通过调用setjmp()设定。参数status 为setjmp()的返回值,用来指示不同地点longjmp()的执行. status 不能设定为零。
那怎样能让if和else里面的语句都执行呢?
看看下面的代码吧^^
#include <stdio.h> int main() { if(1) { printf("if/n"); goto test; } else { test: printf("else/n"); } return 0; }
这个是利用C语言的goto实现的。
再看看下面这段代码吧:^^
#include <stdio.h> #include <setjmp.h> jmp_buf buf; void test() { printf("test()/n"); longjmp(buf,1); printf("这里不会执行/n"); } int main() { if(!setjmp(buf)) { printf("if/n"); test(); } else { printf("else/n"); } return 0; }
看不懂?^^其实一接触我也不知道为什么
在《C专家编程》第128页有说:
setjmp
语法:#include <setjmp.h> int setjmp( jmp_buf envbuf ); |
longjmp
语法:#include <setjmp.h> void longjmp( jmp_buf envbuf, int status ); |
相关文章推荐
- shell中同时执行多个命令,逻辑与&&和或||
- 多线程问题 ----- UI视图 & 网络下载 同时执行操作
- 使用setjmp()和longjmp()执行非局部跳转
- setjmp & longjmp in C language
- setjmp&longjmp
- c语言 异常捕捉 setjmp & longjmp
- C语言错误处理——setjmp & longjmp
- setjmp和longjmp的"非本地跳转"
- Linux&nbsp;命令执行结果同时输出至屏幕…
- C语言错误处理——setjmp & longjmp
- setjmp和longjmp的"非本地跳转"
- setjmp & longjmp 使用
- C语言 控制转移 异常处理机制 setjmp & longjmp
- C语言中的跳转goto&&setjmp&&longjmp sigsetjmp siglongjmp
- setjmp&longjmp
- C语言错误处理——setjmp & longjmp
- setjmp && longjmp
- C语言异常处理——setjmp & longjmp
- setjmp & longjmp
- C语言中的跳转goto&&setjmp&&longjmp sigsetjmp siglongjmp