Return (ERROR) - Makro?

Hallo zusammen,

ich brauch mal grad etwas Hilfe. Ich versuche in C unter Linux ein kleines Programm zu schreiben, dass ein Bild im png Format speichert. Dazu benutze ich einfach die libpng, und ich taste mich da anhand der libpng Doku dran. http://www.libpng.org/pub/png/libpng-1.2.5-manual.ht… Ich bin zugegebener Maßen noch nicht sehr erfahren im C programmieren.

Bei verschiedenen operationen kann es ja passieren, dass ein Fehler auftritt. Z.B. ich versuche eine Datei zum schreiben zu öffnen hab aber keine Schreibrechte. In dem Fall liefert open einen negativen Wert zurück. Mit perror kann man den entschlüsseln und bekommt dann soger eine erklärende Textmeldung anstatt nur der Fehlernummer.
In der libpng sieht das z.B. so aus:

 FILE \*fp = fopen(file\_name, "wb");
 if (!fp)
 {
 return (ERROR);
 }

Ich kann das jetzt natürlich alles irgendwie umstricken, dass da statt ERROR (darüber meckert nämlich der compiler) fp steht. Aber das scheint mir nicht das wahre zu sein. Ist ERROR ein Makro, dass den Fehler auflöst?

Schon mal vielen Dank.
Gruß,
Ferdinand

Hiho

Ich kann das jetzt natürlich alles irgendwie umstricken, dass
da statt ERROR (darüber meckert nämlich der compiler) fp
steht. Aber das scheint mir nicht das wahre zu sein. Ist ERROR
ein Makro, dass den Fehler auflöst?

Aaaalso: nachdem ich mir die Doku mal angeguckt habe: nein, kein Macro und auch nichts anderes, sondern nur in den Beispieldateien dafür da, dem Leser klarzumachen, das dort ein Fehler aufgetaucht ist.
D.h. also, du mußt es nach deinem Gutdünken durch eine eigene Fehlerbehandlungsroutine ersetzen (z.B. wie du schon gesagt hast mit perror anzeigen lassen und Fehlercode zurückgeben …).

Der Einfachheit halber kannst du ja in Zukunft mit grep „define ERROR“ * über alle Dateien, wo Definitionen drin vorkommen, suchen, oder
mit gcc -E dir die ausgewerteten Macros geben lassen und dir die entsprechende Stelle angucken (hmm, gehts noch einfacher?!).

Ags, hoffe das reicht :wink:

mfg TLF

Hi TLF,

danke schön. Hatte zwar gehofft, dass es da eine tolle automatik gäbe, aber man kann ja nicht alles haben :wink:

Das mit gcc -E muss ich mal ausprobieren, das kannte ich auch noch nicht.

Cheers,
Ferdi