gcc
z miłością rzuca mi ten błąd:
bst.c:33: error: invalid application of ‘sizeof’ to incomplete type ‘struct BSTNode’
Co sprawia, że BSTnode jest niekompletne? Poniżej znajdują się definicje struct odnoszące się do BSTnode.
struct BSTnode{
struct BSTnode * left;
struct BSTnode * right;
struct hash minhash;
struct hash maxhash;
struct DHTid owner;
int misses;
};
gdzie mamy:
struct hash{
int hash;
};
struct DHTid
{
int islocal;
unsigned long addr;
unsigned short port;
struct DHTnode * node;
};
i obecnie:
struct DHTnode{
int something;
};
EDYCJA: Mój rzeczywisty kod ma następującą strukturę:
struct DHTnode{...};
struct hash{...};
struct DHTid{...}; /*changed . to ; in pseudocode*/
struct BSTnode{...};
EDYCJA: user318466 wskazał brakujący średnik, ale było w nim jeszcze więcej nieścisłości.
Odpowiedzi:
9 dla odpowiedzi № 1Ty zadeklarowałeś typ struct BSTnode
. Ubiegasz się sizeof
pisać struct BSTNode
. Zwróć uwagę na różnicę wielkości liter: n
i N
. struct BSTNode
jest oczywiście zupełnie nieznany kompilatorowi, który jest niekompletny, co właśnie ci mówi.
2 dla odpowiedzi nr 2
Brakuje ;
na końcu:
struct DHTid{...}.
powinno być:
struct DHTid{...};
0 dla odpowiedzi № 3
Twoje pliki nagłówkowe prawdopodobnie #definiują jeden z Twoich identyfikatorów, aby był czymś, czego nie chcesz.