longjmp

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

Restauraciones configuración regional del entorno y la ejecución de la pila.

  
      void longjmp(  
   jmp_buf env,  
   int value   
);  

Parámetros

env
Variable de entorno donde se almacena.

value
Valor que se devolverá al setjmp llamar.

El longjmp función restaura un entorno de pila y la configuración regional de ejecución previamente guardados en env por setjmp. setjmpy longjmp proporcionan una forma de ejecutar un no locales goto; se utilizan normalmente para pasar el control de ejecución al control de errores o código de recuperación en una rutina invocada anteriormente sin utilizar la normal llamar y convenciones de devolución.

Una llamada a setjmp hace que el entorno de pila actual se guarde en env. Una llamada subsiguiente a longjmp restaura el entorno guardado y devuelve el control al punto inmediatamente posterior a la correspondiente setjmp llamar. Reanuda la ejecución como si valor devolviera simplemente por el setjmp llamar. Los valores de todas las variables (excepto variables de registro) que se puede acceder a la rutina de recibir el control contienen los valores que tenían cuando longjmp se llamó. Los valores de variables de registro están imprevisibles. El valor devuelto por setjmp debe ser distinto de cero. Si valor se pasa como 0, se sustituye el valor 1 en el rendimiento real.

Llame a longjmp antes de la función que llama setjmp devuelve; en caso contrario, los resultados son impredecibles.

Observe las siguientes restricciones al utilizar longjmp:

  • No suponga que los valores de las variables de registro seguirá siendo el mismo. Los valores de variables de registro en la rutina llamada setjmp no se restaura a los valores adecuados después de longjmp se ejecuta.

  • No utilice longjmp para transferir el control fuera de una rutina de control de interrupción a menos que la interrupción sea consecuencia de una excepción de punto flotante. En este caso, puede devolver un programa desde un controlador de interrupción a través de longjmp si se reinicializa primero el paquete matemático de punto flotante mediante una llamada a _fpreset.

    Nota tenga cuidado al usar setjmp y longjmp en programas de C++. Dado que estas funciones no admiten semántica de objeto de C++, es más seguro usar el mecanismo de control de excepciones de C++.

Para obtener más información, consulte mediante setjmp y longjmp.

RutinaEncabezado necesario
longjmp<setjmp.h></setjmp.h>

Para obtener información adicional de compatibilidad, vea Compatibilidad en la Introducción.

Todas las versiones de las bibliotecas en tiempo de ejecución de C.

Vea el ejemplo de _fpreset.

No es aplicable. Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

Control de proceso y entorno
setjmp

Mostrar: