000
24.06.2003, 13:02 Uhr
virtual
Sexiest Bit alive (Operator)
|
... und ihre Lösung/prävention: Vielleicht fällt Euch was zu diesem Thema ein (also wie kann man den Code gestalten, um Fehler zu vermeiden). Ich mach mal den Anfang:
C++: |
FILE* logfile = fopen("datei.log", "a"); if (logfile = NULL) { fprintf(stderr, "Kann logdatei nicht öffnen!\n"); }
|
Man bekommt immer die Fehlermeldung, daß die Datei nicht geöffnet werden konnte. <edit Nach berechtigtem Einwand von ao: Man bekommt nie eine Fehlermeldung, aber mit dem Schreiben ins Log funktionnokkelt es dennoch nicht /> Manche Kompiler warnen, andere nicht. Das Problem ist, daß hier ein Tipfehler vorligt und in der IF-Bedingung nur ein "=" an Stelle von "==" steht. Prävention: Vertausche logfile und NULL, dann muß der compiler einen Fehler machen und man sieht das Problem sofort:
C++: |
FILE* logfile = fopen("datei.log", "a"); if (NULL = logfile) // Compiler muß hier einen Error machen, weil NULL kein lvalue. { fprintf(stderr, "Kann logdatei nicht öffnen!\n"); }
|
Prävention gegen solche Tipfehler: Schreibe in Vergleiche wenn möglich auf die Linke seite einen R-Value. -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) Dieser Post wurde am 24.06.2003 um 13:13 Uhr von virtual editiert. |