Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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.