C makro biblioteki - setjmp ()
Biblioteka standardowa języka C - <setjmp.h>
opis
C Makro bibliotekiint setjmp (jmp_buf środowisko) przechowywane w obecnym otoczeniu zmiennym otoczeniu, aby funkcjonować longjmp ()do późniejszego wykorzystania. Jeśli makro podaje bezpośrednio z makro rozmowy, to zwraca zero, ale jeśli wraca zlongjmp () wywołania funkcji, zwraca longjmp przekazywana jako drugi argument wartość niezerową.
oświadczenie
Oto setjmp () makro stwierdzenie.
int setjmp(jmp_buf environment)
parametry
- środowiska - jest to obiekt używany do przechowywania informacji o środowisku typu jmp_buf.
Wartość zwracana
To makro może zwrócić więcej niż jeden raz. Po raz pierwszy w bezpośrednim nazwać, zawsze zwraca zero. Z informacji dostarczonych środowiska podczas rozmowy longjmp, to makro wrócą znowu, w którym momencie to zwraca wartość zostanie przekazana jako drugi argument do longjmp.
Przykłady
Poniższy przykład demonstruje setjmp () Makro użytkowania.
#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"); }
Załóżmy, skompilować i uruchomić powyższy program, który spowoduje w następujących przypadkach:
跳转函数调用 从 longjmp() 返回值 = w3cschool.cc