C語言 庫宏 setjmp()

C語言 庫宏 setjmp()

C 標(biāo)準(zhǔn)庫 - <setjmp.h>C 標(biāo)準(zhǔn)庫 - <setjmp.h>

C 庫宏 int setjmp(jmp_buf environment) 把當(dāng)前環(huán)境保存在變量 environment 中,以便函數(shù) longjmp() 后續(xù)使用。如果這個宏直接從宏調(diào)用中返回,則它會返回零,但是如果它從 longjmp() 函數(shù)調(diào)用中返回,則它會返回一個傳給 longjmp 作為第二個參數(shù)的非零值。

 

1. 聲明

下面是 setjmp() 宏的聲明。

int setjmp(jmp_buf environment)

 

2. 參數(shù)

  • environment -- 這是一個類型為 jmp_buf 的用于存儲環(huán)境信息的對象。

 

3. 返回值

這個宏可能不只返回一次。第一次,在直接調(diào)用它時,它總是返回零。當(dāng)調(diào)用 longjmp 時帶有設(shè)置的環(huán)境信息,這個宏會再次返回,此時它返回的值會傳給 longjmp 作為第二個參數(shù)。

 

4. 實例

下面的實例演示了 setjmp() 宏的用法。

#include <stdio.h>
#include <stdlib.h>
#include <setjmp.h>

int main()
{
   int val;
   jmp_buf env_buffer;

   /* 保存 longjmp 的調(diào)用環(huán)境 */
   val = setjmp( env_buffer );
   if( val != 0 ) 
   {
      printf("從 longjmp() 返回值 = %s\n", val);
      exit(0);
   }
   printf("跳轉(zhuǎn)函數(shù)調(diào)用\n");
   jmpfunction( env_buffer );
   
   return(0);
}

void jmpfunction(jmp_buf env_buf)
{
   longjmp(env_buf, "w3cschool.cn");
}

讓我們編譯并運行上面的程序,這將產(chǎn)生以下結(jié)果:

跳轉(zhuǎn)函數(shù)調(diào)用
從 longjmp() 返回值 = w3cschool.cn

C 標(biāo)準(zhǔn)庫 - <setjmp.h>C 標(biāo)準(zhǔn)庫 - <setjmp.h>

下一節(jié):C 庫函數(shù) longjmp()

C 簡介

相關(guān)文章
亚洲国产精品第一区二区,久久免费视频77,99V久久综合狠狠综合久久,国产免费久久九九免费视频