描述
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語言 setlocale()用法及代碼示例
- C語言 setlinestyle()用法及代碼示例
- C語言 setviewport()用法及代碼示例
- C語言 setbuf()用法及代碼示例
- C語言 setfillstyle() and floodfill()用法及代碼示例
- C語言 setvbuf()用法及代碼示例
- C語言 sector()用法及代碼示例
- C語言 sinh()用法及代碼示例
- C語言 scanf()用法及代碼示例
- C語言 strcspn()用法及代碼示例
- C語言 showbits()用法及代碼示例
- C語言 sqrt()用法及代碼示例
- C語言 system()用法及代碼示例
- C語言 strtol()用法及代碼示例
- C語言 sprintf()用法及代碼示例
- C語言 sscanf()用法及代碼示例
- C語言 snprintf()用法及代碼示例
- C語言 strrchr()用法及代碼示例
- C語言 strftime()用法及代碼示例
- C語言 strtok()用法及代碼示例
注:本文由純淨天空篩選整理自 C library macro - setjmp()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。