warning: assignment from incompatible pointer type



  • Hallo

    ich doktor nun schon zwei Tage an einer ominösen Fehlermeldung meines Compilers rum und versteh nicht, was da nicht stimmt.
    Eigentlich geht es nur darum Listen zu verketten:

    ........
        dt_matrixliste *p;
        p = liste;                   // Liste ist hier auch vom Typ dt_matrixliste*
        while(p->naechste != NULL){
        p = p->naechste;             // abamat.c:88: warning: assignment from incompatible pointer type
        }
        p->naechste = element;       // abamat.c:91: warning: assignment from incompatible pointer type
    

    Dazu habe ich diesen Datentyp angelegt:

    typedef struct DT_MATRIXLISTE {
        char *name;
        dt_matrix *matrix;
        struct dt_matrixliste *naechste;
    } dt_matrixliste;
    

    Wer kann helfen?

    Das Programm kann ich ausführen und es funzt auch aber was möchte der Compiler hier gerne verändert haben?

    Gruß
    Alex



  • p zeigt auf struct DT_MATRIXLISTE, p->naechste auf struct dt_matrixliste (kleingeschrieben).



  • Hallo,

    Alex444 schrieb:

    ...
    Das Programm kann ich ausführen und es funzt auch aber was möchte der Compiler hier gerne verändert haben?
    ...

    Der Compiler hätte gern übereinstimmende Typen bei der Zuweisung.
    Kurzum: Einmal benutzt du Großschreibung, ein anderes mal Kleinschreibung.

    Versuch es doch mal einheitlich, z.B. so:

    typedef struct dt_matrixliste dt_matrixliste;
    struct dt_matrixliste { 
        // ... whatever ...
        dt_matrixliste *naechste; 
    };
    

    Gruß,
    B.B.


Anmelden zum Antworten