Latest web development tutorials

C-Bibliothek Makro - setjmp ()

C Standard-Bibliothek - <setjmp.h> C Standard - Bibliothek - <setjmp.h>

Beschreibung

C - Bibliothek Makroint setjmp (jmp_buf Umgebung) in der aktuellen Umgebungsvariable Umgebung gespeichert , um zu funktionieren longjmp ()für die spätere Verwendung. Wenn dieses Makro kehrt direkt aus dem Makroaufruf, gibt es null, aber wenn es vonlongjmp () Funktionsaufruf zurückkehrt, es gibt eine longjmp als das zweite Argument eines Nicht - Null - Wert übergeben.

Erklärung

Hier ist die setjmp () Makro-Anweisung.

int setjmp(jmp_buf environment)

Parameter

  • Umwelt - das ist das Objekt zu speichern Umgebungsinformationen eines Typs jmp_buf verwendet.

Rückgabewert

Dieses Makro kann mehr als einmal zurückzukehren. Das erste Mal in eine direkte es nennen, es gibt immer null. Mit Umweltinformationen zur Verfügung gestellt, wenn Sie longjmp aufrufen, wird dieses Makro wieder zurückkehren, an welcher Stelle es den Wert zurückgibt, wird als zweites Argument übergeben werden, um longjmp.

Beispiele

Das folgende Beispiel zeigt die setjmp () Makro-Nutzung.

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

int main()
{
   int val;
   jmp_buf env_buffer;

   /* 保存 longjmp 的调用环境 */
   val = setjmp( env_buffer );
   if( val != 0 ) 
   {
      printf("从 longjmp() 返回值 = %s\n", val);
      exit(0);
   }
   printf("跳转函数调用\n");
   jmpfunction( env_buffer );
   
   return(0);
}

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

Lassen Sie uns zusammenzustellen und um das obige Programm ausführen, die in der folgenden führen:

跳转函数调用
从 longjmp() 返回值 = w3cschool.cc

C Standard-Bibliothek - <setjmp.h> C Standard - Bibliothek - <setjmp.h>