當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C語言 宏 setjmp()用法及代碼示例



描述

C 庫宏int setjmp(jmp_buf environment), 保存當前environment進入變量環境供函數以後使用longjmp().如果這個宏直接從宏調用返回,它返回零,但如果它從一個longjmp()函數調用,然後它返回傳遞給 longjmp 作為第二個參數的值。

聲明

以下是 setjmp() 宏的聲明。

int setjmp(jmp_buf environment)

參數

  • environment─ 這是存儲環境信息的類型為 jmp_buf 的對象。

返回值

這個宏可能返回不止一次。第一次直接調用時,它總是返回零。當longjmp被設置為環境的信息被調用時,宏再次返回;現在它返回傳遞給 longjmp 作為第二個參數的值。

示例

下麵的例子展示了 setjmp() 宏的用法。

#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, "tutorialspoint.com");
}

讓我們編譯並運行上麵的程序,這將產生以下結果——

Jump function call
Returned from a longjmp() with value = tutorialspoint.com

相關用法


注:本文由純淨天空篩選整理自 C library macro - setjmp()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。