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 hier

    Die 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 hier

    sys_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


Anmelden zum Antworten