setjmp.h

本人首次发帖 ,谢谢大家!


首先该头文件有三个:

setjmp 宏函数、longjmp函数、jmp_buf类型

setjmp用来保存jmp_buf类型的变量:

表示当前运行点的环境状态, 然后longjmp函数来返回上次设置的运行环境变量

引用cplusplus例子: 

/* longjmp example */
#include <stdio.h>      /* printf */
#include <setjmp.h>     /* jmp_buf, setjmp, longjmp */

main()
{
  jmp_buf env;
  int val;

  val=setjmp(env);

  printf ("val is %d\n",val);

  if (!val) longjmp(env, 1);

  return 0;
}                                                                                                                                     

在第一次调用longjmp返回0,以后调用返回 longjmp设置的值,

引用cprograme例子 :

#include <iostream>
#include <csetjmp>
 
std::jmp_buf jump_buffer;

 void a(int count) 
{
    std::cout << "a(" << count << ") called\n";
    std::longjmp(jump_buffer, count+1);  // setjump() will return count+1
}
 
int main()
{
    int count = setjmp(jump_buffer);
    if (count != 9) {
        a(count);  // This will cause setjmp() to exit
    }
}

output:

a(0) called
a(1) called
a(2) called
a(3) called
a(4) called
a(5) called
a(6) called
a(7) called
a(8) called

谢谢!

发布了18 篇原创文章 · 获赞 2 · 访问量 2万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章