这是一个简单的问题,我正在实现后缀数组,但我被困在这里:
#define SIZE 150
struct node{
transition *next[SIZE]; //error here
};
struct transition{
int left, right;
node *suffix_link;
};
这段代码不会编译,第三行有错误,任何人都可以帮我PLZ吗?谢谢:D
更新:我的不好我忘了包括第一行,对不起,这是我的第一个问题:P
答案 0 :(得分:8)
您需要转发申报转换:
struct transition; // <-- forward declaration
struct node{
transition *next[SIZE];
};
struct transition{
int left, right;
node *suffix_link;
};
答案 1 :(得分:1)
使用前瞻声明:
struct transition;
struct node
{
transition *next[SIZE];
};
struct transition
{
int left, right;
node *suffix_link;
};
答案 2 :(得分:1)
为什么要转发声明?
因为,当你使用它时,编译器还不知道 transition 的完全定义。
node 不需要相同,因为在转换中使用它时已经定义了它。