【发布时间】:2010-04-23 05:29:48
【问题描述】:
gcc 亲切地向我抛出这个错误:
bst.c:33: error: invalid application of ‘sizeof’ to incomplete type ‘struct BSTNode’
是什么让 BSTnode 不完整?下面是与 BSTnode 相关的结构体定义。
struct BSTnode{
struct BSTnode * left;
struct BSTnode * right;
struct hash minhash;
struct hash maxhash;
struct DHTid owner;
int misses;
};
我们在哪里:
struct hash{
int hash;
};
struct DHTid
{
int islocal;
unsigned long addr;
unsigned short port;
struct DHTnode * node;
};
目前:
struct DHTnode{
int something;
};
编辑:我的实际代码具有以下结构:
struct DHTnode{...};
struct hash{...};
struct DHTid{...}; /*changed . to ; in pseudocode*/
struct BSTnode{...};
编辑:user318466 指出了一个缺少的分号,但还有更多错误。
【问题讨论】:
-
哈希和 DHTNode 结构定义后需要分号。
-
@Boojum:抱歉,这是一个复制粘贴错误:/。它实际上在我的代码中。
-
总是粘贴原始的完整程序。如果你不这样做,你会看到这会带来多少不便......
-
另一件事
struct hash有一个名为int hash;的变量。编译器为此抛出错误。如果我更正它,则没有错误。和实际代码中的一样吗? -
@Naveen:在名为
hash的结构中拥有一个名为hash的字段绝对没有问题。如果你的编译器抱怨它,那一定是你的编译器有问题。