这是一个简单的问题,我正在实现后缀数组,但我被困在这里:
#define SIZE 150
struct node{
transition *next[SIZE]; //error here
};
struct transition{
int left, right;
node *suffix_link;
};
这段代码无法编译,第三行有错误,谁能帮帮我?感谢:D
更新:我的错,我忘了包括第一行,对不起,这是我的第一个问题:P
这是一个简单的问题,我正在实现后缀数组,但我被困在这里:
#define SIZE 150
struct node{
transition *next[SIZE]; //error here
};
struct transition{
int left, right;
node *suffix_link;
};
这段代码无法编译,第三行有错误,谁能帮帮我?感谢:D
更新:我的错,我忘了包括第一行,对不起,这是我的第一个问题:P
您需要转发声明转换:
struct transition; // <-- forward declaration
struct node{
transition *next[SIZE];
};
struct transition{
int left, right;
node *suffix_link;
};
使用前向声明:
struct transition;
struct node
{
transition *next[SIZE];
};
struct transition
{
int left, right;
node *suffix_link;
};
为什么要提前声明?
因为,当您使用它时,编译器还不知道转换的完整定义。
node不需要相同,因为它在您使用时已经定义了它transition。