set_constraint_handler_s
Nach oben zu stdlib.h - Index
Header-Datei
stdlib.h
Kategorie
Behandlung von Laufzeiteinschränkungen
Prototyp
constraint_handler_t set_constraint_handler_s(constraint_handler_t handler);
Beschreibung
Setzt die Behandlungsroutine für Laufzeiteinschränkungen auf den Wert von handler. Eine Behandlungsroutine für Laufzeiteinschränkungen ist eine Funktion, die aufgerufen wird, wenn ein Laufzeiteinschränkungsfehler auftritt. Durch die Registrierung einer Behandlungsroutine wird die vorhergehende ersetzt, d.h. dass nur die neu registrierte aufgerufen wird. Eine Standardbehandlungsroutine wird verwendet, wenn eine nicht benutzerdefinierte Behandlungsroutine festgelegt wurde oder wenn der Benutzer versucht, einen Null-Zeiger zu setzen.
Die Funktion, die als neue Behandlungsroutine angegeben wird, muss den Typ constraint_handler_t mit der folgenden Definition haben:
typedef void (*constraint_handler_t)(const char * restrict msg, void * restrict ptr, errno_t error);
Wenn diese Funktion aufgerufen wird, haben deren Argumente die folgende Bedeutung:
Name | Bedeutung |
---|---|
msg |
Zeigt auf ein char*, das Informationen über den Fehler enthält. |
ptr |
Zeigt auf ein Objekt oder ist Null. |
error |
Wenn die Funktion, in der der Fehler auftrat, den Rückgabetyp error_t hat, dann wird der Rückgabewert übergeben. Ansonsten enthält dieses Argument einen unbestimmten, nicht-negativen Wert. |
Rückgabewert
Bei erfolgreicher Ausführung gibt set_constraint_handler_s den Zeiger auf die zuvor zugeordnete Behandlungsroutine zurück. Wurde das Dateiende erreicht oder trat ein Fehler auf, wird NULL zurückgegeben.
Beispiel
#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; }