C语言 <setjmp.h> setjmp 宏

  • 描述

    C库宏int setjmp(jmp_buf environment)将当前环境保存到变量环境中,以供功能longjmp()稍后使用。如果此宏直接从宏调用返回,则返回零,但如果从longjmp()函数调用返回,则返回作为第二个参数传递给longjmp的值。
  • 声明

    以下是setjmp宏的声明。
    
    int setjmp(jmp_buf environment)
    
    参数
    • environment - 这是存储环境信息的jmp_buf类型的对象。
  • 返回值

    该宏可能返回不止一次。第一次直接调用时,它总是返回零。在将信息设置为环境的情况下调用longjmp时,宏将再次返回;否则,宏将返回。现在,它返回传递给longjmp的值作为第二个参数。
    示例
    以下示例显示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