我收到有关struct元素的错误。
struct trie {
char ch;
bool isEnd;
struct trie arr[4];
struct trie *next;
};
错误:
error: field ‘arr’ has incomplete type
答案 0 :(得分:3)
您可以通过这种方式定义结构
struct trie {
char ch;
bool isEnd;
struct trie *arr[4];
struct trie *next;
};
请注意(为了避免无限递归)arr现在是一个包含四个指针的数组,每个指针指的是一个你必须动态分配的 trie 结构在你的代码上。
您可以使用此功能分配 trie (未初始化):
struct trie *alloc_trie() {
return malloc(sizeof(struct trie));
}
请注意,未分配四个 arr 项指向的四个 trie 。也不是下一个。
答案 1 :(得分:2)
你不能把结构放在自己身上(只是考虑一下,它没有意义)。它会导致关于类型的“无限递归”。也许你可以使用另一个指向struct trie
的指针来为其动态分配内存。但我不确定你想要达到的目标。也许你想要一个指针数组? struct trie *arr[4]
或类似的。
答案 2 :(得分:-1)
转发声明如下:
typedef struct trie trie;
struct trie {
char ch;
int isEnd; //bool unsupported for c89 so..
trie *arr; //have to manually alloc 4 trie here..
trie *next;
};
编辑:从c99草案标准7.1.3 Reserved Identifiers
部分[注释中指明]