set_constraint_handler_s

De RAD Studio
Aller à : navigation, rechercher

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;
}

Voir aussi