Dereferencing pointer to incomplete type?

Was heißt das
hier der Quelltext:

liste.c
http://nopaste.info/7ebf95c6ae.html
main.c
http://nopaste.info/a8af5d7cb7.html
liste.h:
http://nopaste.info/af6a00e5b0.html

Laochailan2010-04-09T06:17:37Z

Beste Antwort

Ne Zeilenangabe wäre nett gewesen.

Das Problem hängt in der Definition der Struktur "dictionary" in liste.c (die eigentlich in liste.h gehört). Vorher hast du per typedef "element_t" aus "struct element" definiert. Du hast aber in deiner Definition die Elemente p_search, p_head und p_tail als Pointer auf "struct element_t" statt auf "struct element" oder "element_t" definiert. Da es aber keine Struktur mit diesem Namen gibt, macht der Compiler eine leere (also unkomplette) Struktur, die Fehler gibt, wenn man auf sie zugreift, bevor man ihren genauen Inhalt definiert.

Solche typedefs sind eigentlich eher blöd, weil sie genau zu solchen Verwechselungen führen.

Der Code ist aber dadurch immer noch nicht fehlerfrei und statt calloc(1, size), was eigentlich für die Reservierung von Arrays gedacht ist, solltest du eher malloc(size) benutzen.