set_constraint_handler_s

Aus RAD Studio
Wechseln zu: Navigation, Suche

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

Siehe auch