Fehler zur Laufzeit erkennen und Zeile ausgeben
-
Hallo NG!
In einem Buch zur Objektorientierten Programmierung habe ich gerade diesen Code gefunden:
#define AssertExp(exp) \ if(exp){} else \ printf(stderr, "Line %ld, File '%s', Assertion failed: \ %s\n", (long) __LINE__, __FILE__, #exp); \
Dieser soll Laufzeitfehler auffangen und ausgeben. Das sind dann Fehler, die der Compiler nicht auffängt, die aber trotzdem zum Crash führen ...
Aufgerufen wird dieses Define dann über
AssertExp((long) i1 * (long) i2 < 0x7fff);
Den Code habe ich erstmal "blind" übernommen. Kennt den jemand und kann mir sagen, wie gut oder schlecht er arbeitet? Oder kennt jemand ähnliche Aufrufe, die evtl. besser arbeiten ???
-
-
Ja, der Link ist ja ganz nett, nur finde ich bei dem Quelltext, den ich gefunden habe super, dass die Zeile und die Datei in der der Fehler aufgerufen wird, mit angezeigt wird.
Hat man ein etwas längeres Programm, ist es recht läßtig bei jeder Division oder jedem Speicherzugriff eine eigene Funktion und Ausgabe einzufügen. Das würde den Quelltext echt unnötig aufblähen. Von daher unterscheidet sich der Ansatz im Link und meinem vorgestellten Quelltext doch arg.
Ich suche praktisch eine Fehlerverarbeitung, die nur einmal im Header deklariert wird und dann automatisch Zeile und Datei in der ein Fehler verursacht wurde, ausgibt.
Kennt jemand etwas ähnliches ???