Partager via


set_terminate (CRT)

Installe votre propre routine d’arrêt que doit appeler terminate.

Syntaxe

terminate_function set_terminate( terminate_function termFunction );

Paramètres

termFunction
Pointeur désignant une fonction d’arrêt que vous écrivez.

Valeur retournée

Retourne un pointeur vers la précédente fonction inscrite par set_terminate, si bien qu’elle peut être restaurée ultérieurement. Si aucune fonction précédente n’a été définie, la valeur de retour peut être utilisée pour restaurer le comportement par défaut ; cette valeur peut être NULL.

Notes

La fonction set_terminate installe termFunction comme fonction appelée par terminate. set_terminate est utilisée avec la gestion des exceptions C++ et peut être appelée à tout moment dans votre programme avant que l’exception soit levée. terminate appelle abort par défaut. Vous pouvez modifier ce comportement par défaut en écrivant votre propre fonction d’arrêt et en appelant set_terminate avec le nom de votre fonction comme argument. terminate appelle la dernière fonction transmise comme argument à set_terminate. Une fois les tâches de nettoyage souhaitées effectuées, termFunction quittez le programme. S’il ne quitte pas (s’il revient à son appelant), abort est appelé.

Dans un environnement multithread, les fonctions d’arrêt sont gérées séparément pour chaque thread. Chaque nouveau thread doit installer sa propre fonction d’arrêt. Par conséquent, chaque thread est responsable de sa propre gestion des arrêts.

Le type terminate_function est défini dans EH.H comme pointeur désignant une fonction d’arrêt définie par l’utilisateur, termFunction qui retourne void. Votre fonction termFunction personnalisée ne peut pas prendre d’arguments et ne doit pas revenir à son appelant. Si c’est le cas, la fonction abort est appelée. Une exception ne peut pas être levée à partir de termFunction.

typedef void ( *terminate_function )( );

Remarque

La fonction set_terminate opère uniquement en dehors du débogueur.

Il existe un seul set_terminate gestionnaire pour toutes les DLL ou exEs liées dynamiquement ; même si vous appelez set_terminate votre gestionnaire peut être remplacé par un autre, ou vous remplacez peut-être un gestionnaire défini par une autre DLL ou EXE.

Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.

Spécifications

Routine En-tête requis
set_terminate <eh.h>

Pour plus d’informations sur la compatibilité, consultez Compatibility.

Exemple

Consultez l’exemple pour terminate.

Voir aussi

Routines de gestion des exceptions
abort
_get_terminate
set_unexpected
terminate
unexpected