setjmpsetjmp

Salva lo stato corrente del programma.Saves the current state of the program.

SintassiSyntax

int setjmp(
   jmp_buf env
);

ParametriParameters

envenv
Variabile in cui è archiviato l'ambiente.Variable in which environment is stored.

Valore restituitoReturn Value

Restituisce 0 dopo aver salvato l'ambiente dello stack.Returns 0 after saving the stack environment. Se setjmp restituisce come risultato di una longjmp chiamare, viene restituito il valore argomento del longjmp, oppure se il valore argomento di longjmp è 0, setjmp restituisce 1.If setjmp returns as a result of a longjmp call, it returns the value argument of longjmp, or if the value argument of longjmp is 0, setjmp returns 1. Non vi è restituzione di errori.There is no error return.

NoteRemarks

Il setjmp funzione Salva un ambiente dello stack che successivamente è possibile ripristinare, usando longjmp.The setjmp function saves a stack environment, which you can subsequently restore, using longjmp. Se usati insieme, setjmp e longjmp consentono di eseguire non in locale goto.When used together, setjmp and longjmp provide a way to execute a non-local goto. In genere vengono utilizzate per passare il controllo di esecuzione alla gestione degli errori o al codice di ripristino in una routine chiamata in precedenza senza utilizzare le convenzioni normali di chiamata o restituzione.They are typically used to pass execution control to error-handling or recovery code in a previously called routine without using the normal calling or return conventions.

Una chiamata a setjmp Salva l'ambiente dello stack corrente in env.A call to setjmp saves the current stack environment in env. Una chiamata successiva al longjmp Ripristina l'ambiente salvato e restituisce il controllo al punto immediatamente successivo alla corrispondente setjmp chiamare.A subsequent call to longjmp restores the saved environment and returns control to the point just after the corresponding setjmp call. Tutte le variabili (eccetto le variabili di registro) accessibili al controllo di ricezione di routine contengono i valori che avevano quando longjmp è stato chiamato.All variables (except register variables) accessible to the routine receiving control contain the values they had when longjmp was called.

Non è possibile usare setjmp per passare dal codice nativo a codice gestito.It is not possible to use setjmp to jump from native to managed code.

Sezione specifica MicrosoftMicrosoft Specific

Nel codice C++ di Microsoft su Windows, longjmp utilizza la stessa semantica di rimozione dello stack come codice di gestione delle eccezioni.In Microsoft C++ code on Windows, longjmp uses the same stack-unwinding semantics as exception-handling code. È possibile usare esattamente negli stessi scenari che possono essere generate le eccezioni C++.It is safe to use in the same places that C++ exceptions can be raised. Tuttavia, questo uso non è portabile e viene fornito con alcuni avvertimenti importanti relativi.However, this usage is not portable, and comes with some important caveats. Per informazioni dettagliate, vedere longjmp.For details, see longjmp.

Fine sezione specifica MicrosoftEND Microsoft Specific

Nota

Nel codice C++ portabile, è possibile presupporre setjmp e longjmp supportano la semantica degli oggetti C++.In portable C++ code, you can't assume setjmp and longjmp support C++ object semantics. In particolare, un setjmp / longjmp chiamata coppia produce un comportamento indefinito se sostituendo il setjmp e longjmp da catch e throw invocherebbe eventuali distruttori non semplici per gli oggetti automatici.Specifically, a setjmp/longjmp call pair has undefined behavior if replacing the setjmp and longjmp by catch and throw would invoke any non-trivial destructors for any automatic objects. Nei programmi C++, è consigliabile che usare il meccanismo di gestione delle eccezioni C++.In C++ programs, we recommend you use the C++ exception-handling mechanism.

Per altre informazioni, vedere Uso di setjmp e longjmp.For more information, see Using setjmp and longjmp.

RequisitiRequirements

RoutineRoutine Intestazione obbligatoriaRequired header
setjmpsetjmp <setjmp.h><setjmp.h>

Per altre informazioni sulla compatibilità, vedere Compatibilità.For additional compatibility information, see Compatibility.

EsempioExample

Vedere l'esempio per _fpreset.See the example for _fpreset.

Vedere ancheSee also

Controllo di processi e ambienteProcess and Environment Control
longjmplongjmp