Namespaces
Variants

ignore_handler_s

From cppreference.net
< c ‎ | error
Défini dans l'en-tête <stdlib.h>
void ignore_handler_s ( const char * restrict msg,

void * restrict ptr,
errno_t error

) ;
(depuis C11)

La fonction retourne simplement à l'appelant sans effectuer aucune autre action.

Un pointeur vers cette fonction peut être passé à set_constraint_handler_s pour établir un gestionnaire de violation de contraintes d'exécution qui ne fait rien.

Comme pour toutes les fonctions à vérification de limites, ignore_handler_s est uniquement garanti d'être disponible si __STDC_LIB_EXT1__ est défini par l'implémentation et si l'utilisateur définit __STDC_WANT_LIB_EXT1__ à la constante entière 1 avant d'inclure <stdlib.h> .

Table des matières

Paramètres

msg - pointeur vers une chaîne de caractères qui décrit l'erreur
ptr - pointeur vers un objet défini par l'implémentation ou un pointeur nul. Des exemples d'objets définis par l'implémentation sont des objets qui donnent le nom de la fonction qui a détecté la violation et le numéro de ligne lorsque la violation a été détectée
error - l'erreur sur le point d'être retournée par la fonction appelante, s'il s'avère que c'est l'une des fonctions qui retournent errno_t

Valeur de retour

(aucun)

Notes

Si ignore_handler_s est utilisé comme gestionnaire de contraintes d'exécution, les violations peuvent être détectées en examinant les résultats des appels de fonctions avec vérification des limites, qui peuvent varier selon les fonctions ( errno_t non nul, caractère nul écrit dans le premier octet de la chaîne de sortie, etc.)

Si set_constraint_handler_s n'est jamais appelé, le gestionnaire par défaut est défini par l'implémentation : il peut s'agir de abort_handler_s , ignore_handler_s , ou d'un autre gestionnaire défini par l'implémentation.

Exemple

#define __STDC_WANT_LIB_EXT1__ 1
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
#ifdef __STDC_LIB_EXT1__
    char dst[2];
    set_constraint_handler_s(ignore_handler_s);
    int r = strcpy_s(dst, sizeof dst, "Too long!");
    printf("dst = \"%s\", r = %d\n", dst, r);
    set_constraint_handler_s(abort_handler_s);
    r = strcpy_s(dst, sizeof dst, "Too long!");
    printf("dst = \"%s\", r = %d\n", dst, r);
#endif
}

Sortie possible :

dst = "", r = 22
abort_handler_s was called in response to a runtime-constraint violation.
The runtime-constraint violation was caused by the following expression in strcpy_s:
(s1max <= (s2_len=strnlen_s(s2, s1max)) ) (in string_s.c:62)
Note to end users: This program was terminated as a result
of a bug present in the software. Please reach out to your
software's vendor to get more help.
Aborted

Références

  • Norme C11 (ISO/IEC 9899:2011) :
  • K.3.6.1.3 La fonction ignore_handler_s (p: 606)

Voir aussi

rappel d'abandon pour les fonctions à vérification des limites
(fonction)
définir le rappel d'erreur pour les fonctions à vérification des limites
(fonction)