typedef struct{
char name[25];
int yearOfBirth;
int district;
char gender;
int age;
CitizenType *next;
}CitizenType;
当我尝试在Visual Studio中以此格式创建链接列表时,我会收到与语法相关的各种错误。 (共102个)但是当我注释掉CitizenType *的时候;我没有错。我意识到它与在完全声明之前引用结构有关,但我不知道如何解决这个问题。
答案 0 :(得分:4)
在结构之前(和单独)声明typedef。
typedef struct citizen_type CitizenType;
struct citizen_type {
...
CitizenType *next;
};
答案 1 :(得分:1)
问题在于
CitizenType
只有在结构结束后才进入类型的命名空间。
因此,只有在声明后才能使用新类型。
您可以使用struct name
(给结构命名)代替它,或者在声明具有名称的结构之前声明类型,如上一篇文章所述。
答案 2 :(得分:0)
试试这个:
typedef struct node{
char name[25];
int yearOfBirth;
int district;
char gender;
int age;
struct node *next;
}CitizenType;
检查this堆栈溢出答案,了解有关C中自引用结构的更多信息。来自答案:
CitizenType不能包含另一个CitizenType 一个永无止境的递归。
希望它有所帮助!