Condividi tramite


Utilizzando setjmp/longjmp

non utilizzare setjmp e longjmp nei programmi C++, queste funzioni non supportano la semantica di oggetti C++.Inoltre, l'utilizzo di queste funzioni in C++ i programmi possono ridurre le prestazioni poiché impedisce l'ottimizzazione sulle variabili locali.Utilizzare la gestione delle eccezioni C++ Try/Catch costrutti anziché.

Se è necessario utilizzare setjmpolongjmp in un programma C++, l'interazione tra queste funzioni e gestione delle eccezioni C++ richiede di importare SETJMP.H o SETJMPEX.H.I distruttori per gli oggetti locali verranno chiamati durante lo stack rimuovono se si esegue la compilazione con /EH.Se si esegue la compilazione con /EHs e una delle funzioni chiama una funzione che utilizza nothrowe se la funzione che utilizza nothrow chiamate longjmp, il distruttore rimuove non può verificarsi, come utilità di ottimizzazione.

Inoltre, se si prevede che il codice sia portabile, non basarsi sulla distruzione corretta agli oggetti basati su frame quando si esegue una di avanzamento nonlocal tramite una chiamata a longjmp.

Vedere anche

Riferimenti

Combinazione di C () strutturata e eccezioni C++