C-Programmierung: Fehlerbehandlung

Aus Wikibooks
Wechseln zu: Navigation, Suche

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.