/*********************************************************************
* Linux setjmp longjmp
* 说明:
* 最近在看cmockery源代码的时候发现setjmp和longjmp函数,于是查了
* 相关的内容,发现真是个好东西,可以完成函数之间的直接跳转。
*
* 2016-5-7 深圳 南山平山村 曾剑锋
********************************************************************/ 一、参考文章:
. C 语言中 setjmp 和 longjmp
http://www.cnblogs.com/hazir/p/c_setjmp_longjmp.html
. setjmp() - Linux man page
http://linux.die.net/man/3/setjmp 二、Demo:
#include <stdio.h>
#include <stdlib.h>
#include <setjmp.h> int main(int argc, char *argv) {
jmp_buf env;
int i; i = setjmp(env);
printf("i = %d.\n", i);
printf("check position for exit before.\n");
if ( i != ) exit(); printf("check position for exit after.\n"); longjmp(env, );
printf("This line does not get printed.\n");
} 三、结果:
myzr@myzr:~/c_program$ ./a.out
i = .
check position for exit before.
check position for exit after.
i = .
check position for exit before.
myzr@myzr:~/c_program$
04-14 20:10