C-Programmierung: Fehlerbehandlung
Eine gute Methode, Fehler zu entdecken, ist es, mit dem Präprozessor eine DEBUG-Konstante zu setzen und in den Code detaillierte Meldungen einzubauen. Wenn dann alle Fehler beseitigt sind und das Programm zufriedenstellend läuft, kann man diese Variable wieder entfernen.
Beispiel:
#define DEBUG
int main(void){
#ifdef DEBUG
führe foo aus (z.B. printf("bin gerade hier\n"); )
#endif
bar; }
Eine andere Methode besteht darin, assert () zu benutzen.
#include <assert.h>
int main (void)
{
char *p = NULL;
/* tu was mit p */
...
/* assert beendet das Programm, wenn die Bedingung FALSE ist */
assert (p != NULL);
...
return 0;
}
Das Makro assert
ist in der Headerdatei assert.h
definiert.
Dieses Makro dient dazu, eine Annahme (englisch: assertion) zu überprüfen. Der Programmierer geht beim Schreiben des Programms davon aus, dass gewisse Annahmen zutreffen (wahr sind). Sein Programm wird nur dann korrekt funktionieren, wenn diese Annahmen zur Laufzeit des Programms auch tatsächlich zutreffen.
Liefert eine Überprüfung mittels assert
den Wert TRUE
, läuft das Programm normal weiter. Ergibt die Überprüfung hingegen ein FALSE
, wird das Programm mit einer Fehlermeldung angehalten.
Die Fehlermeldung beinhaltet den Text "assertion failed" zusammen mit dem Namen der Quelltextdatei und der Angabe der Zeilennummer.