当前位置:天才代写 > tutorial > C语言/C++ 教程 > C尺度库参考指南(8)setjmp.h

C尺度库参考指南(8)setjmp.h

2017-11-02 08:00 星期四 所属: C语言/C++ 教程 浏览:426

8. setjmp.h

头文件setjmp用于节制底层挪用和函数跳转。

宏:

setjmp();

函数:

longjmp();

变量:

typedef jmp_buf

8.1. 变量和界说

变量jmp_buf是一个数组范例,用于存储setjmp和longjmp信息。

8.2. setjmp

声明:

int setjmp(jmp_buf environment);

存储当前运行情况environment变量中。假如返回一个非零值,则表白longjmp达到了源码中所运行到的位置。不然表白运行情况已被存储。

8.3. longjmp

声明:

void longjmp(jmp_buf environment, int value);

这个函数会使environment规复挪用setjmp时存储的environment值。这个函数时措施掉转到曾挪用setjmp处,仿佛setjmp返回value变量的值一样。变量value的值不回为0。假如传的是0,就用1来取代。假如挪用setjmp的函数已经运行终止了,则返回值是不确定的。

实例:

#include<setjmp.h>   

#include<stdio.h>   


void some_function(jmp_buf);   


int main(void)   

{   

  int value;   

  jmp_buf environment_buffer;   


  value=setjmp(environment_buffer);   

  if(value!=0)   

  {   

    printf("Reached this point from a longjmp with value=%d.\n",value);   

    exit(0);   

  }   

  printf("Calling function.\n");   

  some_function(environment_buffer);   

  return 0;   

}   


void some_function(jmp_buf env_buf)   

{   

  longjmp(env_buf,5);   

}

措施的输出是:

Calling function.   
       
Reached this point from a longjmp with value=5.

英文原文:http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.8.html

原文作者:Eric Huss

中文译者:柳惊鸿 Poechant

版权声明:本文的原文版权归Eric Huss所有,中文译文版权归Poechant所有。转载请注明来自"柳大的CSDN博客":http://blog.csdn.net/poechant

 

    关键字:

天才代写-代写联系方式