Frage zu sys_errlist
-
Hallo,
ich übe mich gerade, etwas unter Linux mit gcc zu programmieren.
Dazu habe ich ein Testprogramm geschrieben, dass auch eine Fehlerbehandlung vornimmt (bzw. habe ich das so aus einem Lehrbuch übernommen).
Nur bekomme ich immer eine Fehlermeldung zurück:
lmcp.c:40: Fehler: In Konflikt stehende Typen für »sys_errlist«
/usr/include/bits/sys_errlist.h:28: Fehler: Vorherige Deklaration von »sys_errlist« war hierDie Funktion um die es geht lautet:
#include <sys/errno.h> error(char *s1, char *s2) { extern int errno, sys_err; extern char *sys_errlist[]; if(progname) { fprintf(stderr, " %s: ",progname); } fprintf(stderr,s1,s2); if(errno > 0 && errno < sys_err) { fprintf(stderr, " (%s)",sys_errlist[errno]); fprintf(stderr,"\n"); } errno = 0; return(1); }
Habe leider auch beim Googlen nichts dazu gefunden. Hat mir jemand einen Tipp, wo der Fehler liegen könnte?
Beste Grüße
Solick
-
solick schrieb:
lmcp.c:40: Fehler: In Konflikt stehende Typen für »sys_errlist«
/usr/include/bits/sys_errlist.h:28: Fehler: Vorherige Deklaration von »sys_errlist« war hiersys_errlist ist als
extern char *sys_errlist[];
deklariert. Im Header steht aber eine andere Deklaration z.B.
extern const char* const sys_errlist[];
Die extern Deklarationen kannst (solltest) du weglassen; die stehen im Header.
-
jupp, mit const deklariert und dann noch den Schreibfehler korrigiert (sys_err -> sys_nerr) dann klappt es.
Danke!
Beste Grüße
Solick