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


C語言 longjmp用法及代碼示例

C語言setjmp頭文件(setjmp.h)中longjmp函數的用法及代碼示例。

用法:

void longjmp (jmp_buf env, int val);
跳遠
將環境還原到指示的狀態env,評估setjmp充滿表情envval

該函數永遠不會返回到已被調用的位置。相反,該函數將控件轉移到setjmp最後用於填充env,並將整個表達式計算為val(除非它為零,在這種情況下,它的評估值為1)。

如果env之前的調用未填充setjmp或如果具有此類調用的函數已終止執行,則會導致未定義的行為

在C++中,實現可以執行堆棧展開會自動破壞對象。如果這調用任何非平凡的破壞者,它導致未定義的行為

參數

env
類型的對象jmp_buf由之前的調用填充setjmp其中包含將環境還原到該點的信息。
val
的價值setjmp表達式求值。
如果為零,則表達式的計算結果為1

返回值

無(該函數永不返回)。

示例

/* 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;
}


輸出:
val is 0
val is 1



相關用法


注:本文由純淨天空篩選整理自C標準庫大神的英文原創作品 C longjmp function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。