如何在内部使用具有相同结构的typedef结构?

时间:2014-02-27 23:16:03

标签: c struct

我想避免在每次创建新的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;

2 个答案:

答案 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 NodeNode,但是当您引用Node时,typedef未完成。因此,您必须输入struct Node。我之前的编辑不正确,因为结构没有名称,这会导致指针出现问题。

typedef struct Node {
    int data;
    struct Node *next;
} Node;