Mediante setjmp/longjmp

No utilice setjmp y longjmp en programas de C++; estas funciones no admiten la semántica de objeto de C++.Además, mediante estas funciones en C++ programas pueden degradar el rendimiento evitando la optimización en variables locales.Utilice las construcciones de try/catch/finally de control de excepciones de C++ en su lugar.

Si debe utilizar setjmp/longjmp en un programa de C++., la interacción entre estas funciones y el control de excepciones de C++ requiere que incluye SETJMP.H o SETJMPEX.H.Destructores para los objetos locales se llamará durante desenreda la pila si compila con /EH.Si compila con /EHs y una de las funciones llama a una función que utilice nothrow, y si la función que utiliza las llamadas longjmpde nothrow , destructor desenredo no puede aparecer, dependiendo del optimizador.

Además, si desea que el código sea portable, no confíe en la destrucción correcta de objetos cuadro-basados al ejecutar un indicado local mediante una llamada a longjmp.

Vea también

Referencia

Mezclar C (Structured) y C++ Excepciones