setjmp

Salva lo stato corrente del programma.

Sintassi

int setjmp(
   jmp_buf env
);

Parametri

env
Variabile in cui è archiviato l'ambiente.

Valore restituito

Restituisce 0 dopo aver salvato l'ambiente dello stack. Se setjmp restituisce a causa di una longjmp chiamata, restituisce l'argomento di longjmpo se l'argomento value value di longjmp è 0, setjmp restituisce 1. Non viene restituito alcun errore.

Osservazioni:

La funzione setjmp salva un ambiente dello stack che successivamente è possibile ripristinare utilizzando longjmp. Quando setjmp e longjmp vengono utilizzate insieme, offrono un metodo per eseguire goto non in locale. In genere vengono usati per passare il controllo di esecuzione al codice di gestione degli errori o di ripristino in una routine chiamata in precedenza senza usare le normali convenzioni di chiamata o restituzione.

Una chiamata a setjmp salva l'ambiente corrente dello stack in env. Una chiamata successiva a longjmp ripristina l'ambiente salvato e restituisce il controllo al punto immediatamente successivo alla corrispondente chiamata setjmp. Tutte le variabili (eccetto le variabili di registro) accessibili al controllo di ricezione di routine contengono i valori che avevano quando longjmp è stato chiamato.

Non è possibile usare setjmp per passare dal codice nativo al codice gestito.

Sezione specifica Microsoft

Nel codice Microsoft C++ in Windows longjmp usa la stessa semantica di rimozione dello stack del codice di gestione delle eccezioni. È possibile usare in modo sicuro nelle stesse posizioni che è possibile generare eccezioni C++. Tuttavia, questo utilizzo non è portabile e include alcune avvertenze importanti. Per informazioni dettagliate, vedere longjmp.

Fine sezione specifica Microsoft

Nota

Nel codice C++ portabile non è possibile presupporre setjmp e longjmp supportare la semantica degli oggetti C++. In particolare, una setjmp/longjmp coppia di chiamate ha un comportamento indefinito se sostituisce setjmp e longjmp da catch e throw richiama eventuali distruttori non semplici per qualsiasi oggetto automatico. Nei programmi C++ è consigliabile usare il meccanismo di gestione delle eccezioni C++.

Per altre informazioni, vedere Uso di setjmp e longjmp.

Requisiti

Ciclo Intestazione obbligatoria
setjmp <setjmp.h>

Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).

Esempio

Vedere l'esempio per _fpreset.

Vedi anche

Processo e controllo dell'ambiente
longjmp