abort_handler_s
|
Défini dans l'en-tête
<stdlib.h>
|
||
|
void
abort_handler_s
(
const
char
*
restrict
msg,
void
*
restrict
ptr,
|
(depuis C11) | |
Écrit un message défini par l'implémentation vers
stderr
qui doit inclure la chaîne pointée par
msg
et appelle
abort()
.
Un pointeur vers cette fonction peut être passé à set_constraint_handler_s pour établir un gestionnaire de violation des contraintes d'exécution.
-
Comme pour toutes les fonctions à vérification de limites,
abort_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 le message écrit dans le flux d'erreur standard |
| ptr | - | pointeur vers un objet défini par l'implémentation ou un pointeur nul. Les exemples d'objets définis par l'implémentation sont des objets qui donnent le nom de la fonction ayant détecté la violation et le numéro de ligne lorsque la violation a été détectée |
| error | - | une valeur positive de type errno_t |
Valeur de retour
aucun ; cette fonction ne retourne pas à son appelant
Notes
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.2 La fonction abort_handler_s (p: 605)
Voir aussi
|
(C11)
|
Fonction de rappel d'ignorance pour les fonctions à vérification de limites
(fonction) |
|
(C11)
|
Définir la fonction de rappel d'erreur pour les fonctions à vérification de limites
(fonction) |