ignore_handler_s
|
Défini dans l'en-tête
<stdlib.h>
|
||
|
void
ignore_handler_s
(
const
char
*
restrict
msg,
void
*
restrict
ptr,
|
(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_sest 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
|
(C11)
|
rappel d'abandon pour les fonctions à vérification des limites
(fonction) |
|
(C11)
|
définir le rappel d'erreur pour les fonctions à vérification des limites
(fonction) |