Utilisation setjmp/longjmp
N'utilisez pas setjmp et longjmp dans les programmes C++ ; ces fonctions ne prennent pas en charge la sémantique d'objet C++.En outre, pour utiliser ces fonctionnalités en C++ les programmes peuvent diminuer les performances en empêchant l'optimisation sur des variables locales.Utilisez des éléments de try/Catch de gestion des exceptions C++ à la place.
Si vous devez utiliser setjmp/longjmp dans un programme C++, l'interaction entre ces fonctions et gestion des exceptions C++ exige que vous incluez SETJMP.H ou SETJMPEX.H.Les destructeurs des objets locaux sont appelés pendant le déroulement de pile si vous compilez avec /EH.Si vous compilez avec /EHs et une de vos fonctions appellent une fonction qui utilise declspec (nothrow), et si la fonction qui utilise des appels longjmpd' nothrow , le déroulement de destructeur ne peut pas se produire, selon l'optimiseur.
Également, si vous souhaitez que votre code soit portable, ne comptez pas sur la destruction correcte des objets frame-basés en exécutant un goto non locale à l'aide d'un appel à longjmp.