setjmp
儲存程式的目前狀態。
int setjmp(
jmp_buf env
);
參數
- env
儲存環境的變數。
傳回值
在保存堆疊環境之後傳回 0 。 如果setjmp回傳呼叫longjmp的結果,則他會回傳longjmp的value引數,或是如果longjmp的value引數是0,則setjmp會回傳1。 不會回傳錯誤。
備註
setjmp 函式儲存堆疊環境,您可以接著使用 longjmp以還原。 setjmp 和 longjmp一起使用時,可提供執行非區域 goto 的方式。 它們通常用於將執行控制項傳遞至之前所呼叫常式中的錯誤處理或復原程式碼,而不使用一般呼叫或傳回慣例。
呼叫 setjmp 的方式儲存在 env的目前堆疊環境。 連續的 longjmp 呼叫還原已儲存的環境並回傳控制到對應的 setjmp 呼叫之下的點。 所有得到控制的常式的變數的值 (除了暫存器變數) 包含在呼叫 longjmp 時它們的值。
使用 setjmp 從原生程式碼跳到 Managed 程式碼是不可能的。
注意事項 setjmp 和 longjmp 不支援 C++ 物件語意。 在 C++ 程式,請使用 C++ 例外狀況處理機制。
如需詳細資訊,請參閱 使用 setjmp 和 longjmp (Using setjmp and longjmp) 。
需求
常式 |
必要的標頭 |
---|---|
setjmp |
<setjmp.h> |
如需其他相容性資訊,請參閱<簡介>中的相容性。
範例
請參閱 _fpreset 的範例。
.NET Framework 對等用法
不適用。若要呼叫標準 C 函式,請使用 PInvoke。如需詳細資訊,請參閱平台叫用範例。