set_constraint_handler_s
Remonter à stdlib.h - Index
Fichier en-tête
stdlib.h
Catégorie
Gestion des contraintes d'exécution
Prototype
constraint_handler_t set_constraint_handler_s(constraint_handler_t handler);
Description
Définit le gestionnaire de contraintes d'exécution sur la valeur de handler. Un gestionnaire de contraintes d'exécution est une fonction qui est appelée quand une erreur de contrainte d'exécution se produit. L'enregistrement d'un gestionnaire remplace l'ancien, ce qui signifie que seul le dernier gestionnaire enregistré sera appelé. Un gestionnaire par défaut est utilisé si un gestionnaire qui n'est pas défini par l'utilisateur a été défini ou si l'utilisateur tente de le définir sur un pointeur null.
La fonction donnée comme nouveau gestionnaire de contraintes doit être de type constraint_handler_t, avec la définition suivante :
typedef void (*constraint_handler_t)(const char * restrict msg, void * restrict ptr, errno_t error);
Quand cette fonction est appelée, les arguments qui lui sont fournis ont la signification suivante :
Nom | Signification |
---|---|
msg |
Pointe sur un char* qui contient des informations sur l'erreur. |
ptr |
Pointe sur un objet ou vaut null. |
error |
Si la fonction où l'erreur s'est produite a pour type de retour error_t, la valeur de retour est alors envoyée. Sinon, elle contient une valeur non négative indéterminable. |
Valeur renvoyée
En cas de succès, set_constraint_handler_s renvoie le pointeur sur le gestionnaire de contraintes préalablement assigné. En cas d'erreur ou de fin de fichier, elle renvoie NULL.
Exemple
#include <string.h> #include <stdio.h> #include <stdlib.h> void myRuntimeConstraintHandler(const char* msg, void * ptr, errno_t error){ printf_s("A runtime constraint violation has occurred in function: %s and the function exited with error number: %d", msg, error); } int main(void) { char* string = NULL; set_constraint_handler_s(myRuntimeConstraintHandler); gets_s(string, 5); return 0; }