Namensräume
Varianten
Aktionen

Fehlerbehandlung

Von cppreference.com
< c

Inhalt

[bearbeiten] Fehlercodes

Definiert in Header <errno.h>
Makro, das zur POSIX-kompatiblen, Thread-lokalen Fehlernummern-Variable expandiert
(Makrovariable) [bearbeiten]
Makros für Standard-POSIX-kompatible Fehlerbedingungen
(Makrokonstante) [bearbeiten]

[bearbeiten] Assertions

Definiert in Header <assert.h>
bricht das Programm ab, wenn die vom Benutzer spezifizierte Bedingung nicht wahr ist. Kann für Release-Builds deaktiviert werden
(Funktionsmakro) [bearbeiten]
(C11)(in C23 entfernt)
gibt eine Diagnose zur Kompilierungszeit aus, wenn der Wert eines konstanten Ausdrucks falsch ist
(Keyword-Makro)

Grenzenprüfung

Die Standardbibliothek stellt grenzgeprüfte Versionen einiger bestehender Funktionen bereit (gets_s, fopen_s, printf_s, strcpy_s, wcscpy_s, mbstowcs_s, qsort_s, getenv_s, etc). Diese Funktionalität ist optional und nur verfügbar, wenn __STDC_LIB_EXT1__ definiert ist. Die folgenden Makros und Funktionen unterstützen diese Funktionalität.

 
Definiert in Header <errno.h>
Definiert in Header <stdio.h>
errno_t
(C11)
ein Typedef für den Typ int, der zur Selbstdokumentation von Funktionen verwendet wird, die errno-Werte zurückgeben
(typedef)
 
Definiert im Header <stddef.h>
Definiert in Header <stdio.h>
Definiert im Header <stdlib.h>
Definiert in Header <string.h>
Definiert in Header <time.h>
Definiert in Header <wchar.h>
rsize_t
(C11)
ein Typedef für denselben Typ wie size_t, der zur Selbstdokumentation von Funktionen verwendet wird, die ihre Parameter zur Laufzeit auf Bereiche prüfen
(typedef)
 
Definiert in Header <stdint.h>
RSIZE_MAX
(C11)
größte akzeptable Größe für grenzgeprüfte Funktionen, expandiert zu einer Konstanten oder Variablen, die sich zur Laufzeit ändern kann (z.B. wenn sich die aktuell zugewiesene Speichergröße ändert)
(Makrovariable)
 
Definiert im Header <stdlib.h>
legt den Fehler-Callback für grenzgeprüfte Funktionen fest
(Funktion) [bearbeiten]
Abbruch-Callback für die grenzgeprüften Funktionen
(Funktion) [bearbeiten]
Ignorier-Callback für die grenzgeprüften Funktionen
(Funktion) [bearbeiten]

Hinweis: Implementierungen von grenzgeprüften Funktionen sind als Open-Source-Bibliotheken Safe C und Slibc verfügbar, sowie als Teil von Watcom C. Es gibt auch eine inkompatible Reihe von grenzgeprüften Funktionen, die in Visual Studio verfügbar sind.

(seit C11)

[bearbeiten] Anmerkungen

Seit C23 ist static_assert selbst ein Schlüsselwort, das auch ein vordefiniertes Makro sein kann, daher stellt <assert.h> es nicht mehr bereit.

[bearbeiten] Referenzen

Erweiterter Inhalt
  • C23-Standard (ISO/IEC 9899:2024)
  • 7.2 Diagnostik <assert.h> (S: TBD)
  • 7.5 Fehler <errno.h> (S: TBD)
  • 7.19 Common definitions <stddef.h> (p: TBD)
  • 7.20 Ganzzahlige Typen <stdint.h> (S: TBD)
  • 7.21 Ein-/Ausgabe <stdio.h> (S: TBD)
  • 7.22 Allgemeine Dienstprogramme <stdlib.h> (S: TBD)
  • K.3.1.3 Verwendung von errno (S: TBD)
  • K.3.2/2 errno_t (S: TBD)
  • K.3.3/2 rsize_t (S: TBD)
  • K.3.4/2 RSIZE_MAX (S: TBD)
  • 7.31.3 Fehler <errno.h> (S: TBD)
  • 7.31.10 Ganzzahlige Typen <stdint.h> (S: TBD)
  • 7.31.11 Ein-/Ausgabe <stdio.h> (S: TBD)
  • 7.31.12 Allgemeine Dienstprogramme <stdlib.h> (S: TBD)
  • C17-Standard (ISO/IEC 9899:2018)
  • 7.2 Diagnostik <assert.h> (S: TBD)
  • 7.5 Fehler <errno.h> (S: TBD)
  • 7.19 Common definitions <stddef.h> (p: TBD)
  • 7.20 Ganzzahlige Typen <stdint.h> (S: TBD)
  • 7.21 Ein-/Ausgabe <stdio.h> (S: TBD)
  • 7.22 Allgemeine Dienstprogramme <stdlib.h> (S: TBD)
  • K.3.1.3 Verwendung von errno (S: TBD)
  • K.3.2/2 errno_t (S: TBD)
  • K.3.3/2 rsize_t (S: TBD)
  • K.3.4/2 RSIZE_MAX (S: TBD)
  • 7.31.3 Fehler <errno.h> (S: TBD)
  • 7.31.10 Ganzzahlige Typen <stdint.h> (S: TBD)
  • 7.31.11 Ein-/Ausgabe <stdio.h> (S: TBD)
  • 7.31.12 Allgemeine Dienstprogramme <stdlib.h> (S: TBD)
  • C11-Standard (ISO/IEC 9899:2011)
  • 7.2 Diagnostik <assert.h> (S: 186-187)
  • 7.5 Fehler <errno.h> (S: 205)
  • 7.19 Common definitions <stddef.h> (p: 288)
  • 7.20 Ganzzahlige Typen <stdint.h> (S: 289-295)
  • 7.21 Ein-/Ausgabe <stdio.h> (S: 296-339)
  • 7.22 Allgemeine Dienstprogramme <stdlib.h> (S. 340-360)
  • K.3.1.3 Verwendung von errno (S: 584)
  • K.3.2/2 errno_t (S: 585)
  • K.3.3/2 rsize_t (S: 585)
  • K.3.4/2 RSIZE_MAX (S: 585)
  • 7.31.3 Fehler <errno.h> (S: 455)
  • 7.31.10 Ganzzahlige Typen <stdint.h> (S: 456)
  • 7.31.11 Ein-/Ausgabe <stdio.h> (S: 456)
  • 7.31.12 Allgemeine Dienstprogramme <stdlib.h> (S. 456)
  • C99-Standard (ISO/IEC 9899:1999)
  • 7.2 Diagnostik <assert.h> (S: 169)
  • 7.5 Fehler <errno.h> (S: 186)
  • 7.26.3 Fehler <errno.h> (S: 401)
  • 7.26.8 Ganzzahlige Typen <stdint.h> (S: 401)
  • 7.26.9 Ein-/Ausgabe <stdio.h> (S: 402)
  • 7.26.10 Allgemeine Dienstprogramme <stdlib.h> (S. 402)
  • C89/C90-Standard (ISO/IEC 9899:1990)
  • 4.2 DIAGNOSTICS <assert.h>
  • 4.1.3 Fehler <errno.h>
  • 4.13.1 Fehler <errno.h>
  • 4.13.6 Ein-/Ausgabe <stdio.h>
  • 4.13.7 Allgemeine Dienstprogramme <stdlib.h>

[bearbeiten] Siehe auch

definiert den von den allgemeinen mathematischen Funktionen verwendeten Fehlerbehandlungsmechanismus
(Makrokonstante) [bearbeiten]
C++ Dokumentation für Fehlerbehandlung