程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C標准庫參考指南(8)setjmp.h

C標准庫參考指南(8)setjmp.h

編輯:關於C語言

8. setjmp.h

頭文件setjmp用於控制底層調用和函數跳轉。

宏:

setjmp();

函數:

longjmp();

變量:

typedef jmp_buf

8.1. 變量和定義

變量jmp_buf是一個數組類型,用於存儲setjmp和longjmp信息。

8.2. setjmp

聲明:

int setjmp(jmp_buf environment);

存儲當前運行環境environment變量中。如果返回一個非零值,則表明longjmp到達了源碼中所運行到的位置。否則表明運行環境已被存儲。

8.3. longjmp

聲明:

void longjmp(jmp_buf environment, int value);

這個函數會使environment恢復調用setjmp時存儲的environment值。這個函數時程序掉轉到曾調用setjmp處,好像setjmp返回value變量的值一樣。變量value的值不回為0。如果傳的是0,就用1來代替。如果調用setjmp的函數已經運行終止了,則返回值是不確定的。

實例:

#include<setjmp.h>   

#include<stdio.h>   


void some_function(jmp_buf);   


int main(void)   

{   

  int value;   

  jmp_buf environment_buffer;   


  value=setjmp(environment_buffer);   

  if(value!=0)   

  {   

    printf("Reached this point from a longjmp with value=%d.\n",value);   

    exit(0);   

  }   

  printf("Calling function.\n");   

  some_function(environment_buffer);   

  return 0;   

}   


void some_function(jmp_buf env_buf)   

{   

  longjmp(env_buf,5);   

}

程序的輸出是:

Calling function.   
       
Reached this point from a longjmp with value=5.

英文原文:http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.8.html

原文作者:Eric Huss

中文譯者:柳驚鴻 Poechant

版權聲明:本文的原文版權歸Eric Huss所有,中文譯文版權歸Poechant所有。轉載請注明來自"柳大的CSDN博客":http://blog.csdn.net/poechant

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved