000
12.04.2004, 15:36 Uhr
Pablo
Supertux (Operator)
|
Es gibt etwas wa sich nicht verstehen kann, warum das passiert.
Ich habe eine globale Variable FILE* output;
Da der Benutzer bestimmen kann, ob output stdout, stderr oder eine Datei sein soll, habe ich output als global deklariert, damit sie in allen .c Dateien verfügbar ist.
Nun, ich wollte "# ----- end of debug informtion ------\n" am Ende der Datei schreiben, falls output weder stdout noch stderr, also eine Datei.
Da output auch NULL sein kann, habe ich folgendes gemacht:
| C++: |
if (output!=stdout && output!=stderr) { dfprintf(output, "# --- end of debug informtion ----\n"); // eigene Funktion if (output!=NULL) fclose(output); }
|
So funktioniert es wunderbar. Aber wenn ich
| C++: |
if (!output) fclose(output);
|
statt
| C++: |
if (output!=NULL) fclose(output);
|
schreibe, dann bekomme ich Segmentation Fault wieso denn das? ich dachte !output wäre äquivalent zu output != NULL, oder? Wieso wird fclose ausgeführt, wenn ich if (!output) schreibe? An anderen Stellen geht das, nur da nicht, wieso denn das? -- A! Elbereth Gilthoniel! silivren penna míriel o menel aglar elenath, Gilthoniel, A! Elbereth! |