C语言 <setjmp.h> longjmp 函数

  • 描述

    C库函数int longjmp(jmp_buf environment, int value)将在与相应的jmp_buf参数相同的程序调用中恢复由最近一次调用setjmp()宏保存的环境。
  • 声明

    以下是setjmp宏的声明。
    
    void longjmp(jmp_buf environment, int value)
    
    参数
    • environment - 这是jmp_buf类型的对象,包含用于在setjmp的调用点恢复环境的信息。
    • value - 这是setjmp表达式求值的值。
  • 返回值

    此函数不返回任何值。
    示例
    以下示例显示fmod函数的用法-
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <setjmp.h>
    
    int main () {
       int val;
       jmp_buf env_buffer;
    
       /* save calling environment for longjmp */
       val = setjmp( env_buffer );
       
       if( val != 0 ) {
          printf("Returned from a longjmp() with value = %s\n", val);
          exit(0);
       }
       
       printf("Jump function call\n");
       jmpfunction( env_buffer );
       
       return(0);
    }
    
    void jmpfunction(jmp_buf env_buf) {
       longjmp(env_buf, "jc2182.com");
    }
    
    尝试一下
    让我们编译并运行上面的程序,它将产生以下结果-
    
    Jump function call
    Returned from a longjmp() with value = jc2182.com