set_terminate (CRT)

Installe votre propre routine d'arrêt pour être appelé par terminate

terminate_function set_terminate(
   terminate_function termFunction
);

Paramètres

  • termFunction
    Pointeur vers une fonction de fin que vous spécifiez.

Valeur de retour

Retourne un pointeur vers la fonction de traduction précédente indiquée par set_terminate afin que la fonction précédente puisse être restaurée plus tard. Si aucune fonction n'est 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 la fonction appelée par terminate. set_terminate est utilisé dans la gestion des exceptions C++ et peut être appelée à tout moment dans votre programme avant que l'exception ne soit levée. Par défaut, terminate appelle abort. 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 son argument. La routine terminateappelle toujours la dernière fonction donnée comme argument à set_terminate. Après avoir effectué les tâches de nettoyage souhaitées, termFunction doit quitter le programme. S'il ne se termine pas (si elle revient à son appelant), abort est appelé.

Dans un environnement multithread, les fonctions de traduction qui terminent sont contenues séparément pour chaque thread. Chacun des nouveaux threads a beson d'installer sa propre fonctionde traduction qui termine. Par conséquent, chaque thread est responsable de sa propre gestion de traduction qui termine.

Le type terminate_function est défini dans EH.H en tant que pointeur vers une fonction inattendue définie par l'utilisateur et qui termine, termFunction qui retourne void. La fonction personnalisée termFunction peut ne prendre aucun argument et ne doit pas retourner à l'appelant. Si il le fait, abort est appellé. Une exception ne peut être relevée depuis termFunction.

typedef void ( *terminate_function )( );

Notes

La fonction set_terminate fonctionne uniquement hors du débogueur.

Il existe un seul gestionnaire set_terminate pour toutes les DLL ou EXEs dynamiquement liés ; même si vous appelez set_terminate votre gestionnaire peut être remplacé par un autre ou que vous remplacez un set de gestionnaire par une DLL ou un fichier EXE différent.

Cette fonctionnalité n'est pas prise en charge sous /clr:pure.

Configuration requise

Routine

En-tête requis

set_terminate

<EH.H>

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

Exemple

Voir l'example pour terminaison.

Équivalent .NET Framework

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

Voir aussi

Référence

Routines de la gestion d'exceptions

abort

_get_terminate

set_unexpected (CRT)

terminate (CRT)

inattendu (CRT)