GCC mit "pedantic"



  • Hallo,

    ich habe folgende kleine frage:

    Warum bekomme ich mit dem GCC auf "pedantic" bei folgendem code

    typedef struct {
        int32_t       	s32ErrNo;
        const int8_t	*ps8zErrString;
    } sErrDesc_t;
    
    static const sErrDesc_t asErrDescs[] =
    {
    /* 	lErrNo,                      	ps8zErrString									*/
        {MB_ERR_VEC_FULL               	, "There is no more space in the vector."     	},
        {MB_ERR_VEC_INVALID_SIZE       	, "A vector cannot be of size zero."          	},
        {MB_ERR_VEC_INVALID_VEC        	, "The pointer given as vector is invalid."   	},
        {MB_ERR_VEC_INVALID_PTR        	, "The pointer given as data is invalid."     	},
        {MB_ERR_VEC_INVALID_STR        	, "The pointer given as dest. is invalid."    	},
        {MB_ERR_VEC_INVALID_IDX        	, "The idx given as destination is invalid."  	},
        {MB_ERR_VEC_NOT_CONTIGUOUS	   	, "The insertion point is invalid."			 	},
        {MB_ERR_VEC_NOT_FOUND		   	, "The byte specified could not be found."	 	}
    };
    

    diese Warnung an den Kopf geworfen:

    Fehler: Zeigerziele in Initialisierung unterscheiden sich im Vorzeichenbesitz [-Wpointer-sign]

    Hab schon ne Stunde gegoogelt, ja, auch mit englischen Übersetzungen. Es gibt ein paar erzeugende Beispiele wo klar ist dass beispielsweise die Zuweiseung von int8_t* zu uint8_t * eine Warnung hervorruft.

    In meinem Fall ist mir aber nicht klar welche implizite Typzuweisung ich übersehe. C strings sind ja normalerweise signed...

    Help 🙂

    Martin



  • Hint:

    char
    signed char
    unsigned char
    

    sind 3 unterschiedliche Typen, nicht 2.

    Edit: Wobei die Fehlermeldung auch schwachsinnig ist, schlechte Lokalisierung des gcc? 😃


Anmelden zum Antworten