Nous recommandons d’utiliser Visual Studio 2017

longjmp

 

Pour obtenir la dernière documentation sur Visual Studio 2017, consultez Documentation Visual Studio 2017.

Restaure la pile aux paramètres régionaux de l’environnement et de l’exécution.

  
      void longjmp(  
   jmp_buf env,  
   int value   
);  

Paramètres

env
Variable dans laquelle l’environnement est stocké.

value
Valeur à retourner au setjmp appel.

Le longjmp fonction restaure un environnement de pile et les paramètres régionaux d’exécution précédemment enregistrement dans env par setjmp. setjmpet longjmp fournissent un moyen d’exécuter un non locaux goto; ils sont généralement utilisés pour passer le contrôle de l’exécution pour la gestion des erreurs ou code de récupération dans une routine appelée précédemment sans utiliser la normale appeler et conventions de retour.

Un appel à setjmp , l’environnement de pile en cours doit être enregistré dans env. Un appel ultérieur à longjmp restaure l’environnement enregistré et retourne le contrôle au point immédiatement après le correspondant setjmp appeler. L’exécution reprend comme si valeur a simplement été retourné par le setjmp appeler. Les valeurs de toutes les variables (sauf les variables de Registre) qui sont accessibles à la routine de recevoir de contrôle contiennent les valeurs qu’elles avaient lorsque longjmp a été appelée. Les valeurs des variables de Registre sont imprévisibles. La valeur retournée par setjmp doit être différente de zéro. Si valeur est passé en tant que 0, la valeur 1 est utilisée dans le retour réel.

Appelez longjmp avant la fonction appelée setjmp retourne ; sinon, les résultats sont imprévisibles.

Respecter les restrictions suivantes lors de l’utilisation longjmp:

  • Ne supposez pas que les valeurs des variables de Registre reste le même. Les valeurs des variables de Registre dans la routine qui appelle setjmp ne peuvent pas être restaurés sur les valeurs appropriées après longjmp est exécutée.

  • N’utilisez pas longjmp pour transférer le contrôle hors d’une routine de gestion d’interruption, sauf si l’interruption est provoquée par une exception de virgule flottante. Dans ce cas, il peut retourner un programme à partir d’un gestionnaire d’interruption via longjmp si elle réinitialise tout d’abord le package mathématique à virgule flottante en appelant _fpreset.

    Remarque être prudent lorsque vous utilisez setjmp et longjmp dans les programmes C++. Étant donné que ces fonctions ne prennent pas en charge la sémantique d’objet C++, il est préférable d’utiliser le mécanisme de gestion des exceptions C++.

Pour plus d’informations, consultez à l’aide de setjmp et longjmp.

RoutineEn-tête requis
longjmp<setjmp.h></setjmp.h>

Pour plus d'informations sur la compatibilité, voir Compatibilité dans l'introduction.

Toutes les versions des bibliothèques Runtime C.

Consultez l’exemple de _fpreset.

Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme.

Processus de contrôle et d’environnement
setjmp

Afficher: