我想避免在每次创建新的struct变量之前编写struct
,所以我typedef
{/ p}}。
以下不起作用:
typedef struct {
int data;
Node *next;
} Node;
但是这样做:
struct Node {
int date;
struct Node *next;
};
如何在C中使用typedef结构?我继续用上面的错误得到这个错误:
error: unknown type name 'Node'
Node *next;
答案 0 :(得分:2)
在整个typedef语句结束之前,typedef才会生效。
我没有尝试过,但你可能能够对正向引用进行输入:
typedef struct Node_struct Node;
struct Node_struct {
int date;
Node *next;
};
你当然可以反过来做到这一点
struct Node_struct {
int date;
struct Node_struct *next;
};
typedef struct Node_struct Node;
答案 1 :(得分:1)
您可以输入struct Node
到Node
,但是当您引用Node
时,typedef未完成。因此,您必须输入struct Node
。我之前的编辑不正确,因为结构没有名称,这会导致指针出现问题。
typedef struct Node {
int data;
struct Node *next;
} Node;