2014-02-27 33 views
0

我想避免在每次创建一个新的结构变量前写入struct,所以我是typedef如何在内部使用一个typedef结构和相同的结构?

下不起作用:

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

这确实不过:

struct Node { 
    int date; 
    struct Node *next; 
}; 

如何使用在C typedef结构?我不断收到此错误与上面的一个:

error: unknown type name 'Node' 
      Node *next; 
+2

的可能重复[自引用结构体定义?](http://stackoverflow.com/questions/588623/self-referential-struct-definition) – nwellnhof

+0

实际上是[在struct typedef中的声明规则]的副本(http://stackoverflow.com/questions/13303168 /申述划入-ST构作-类型定义)。 – nwellnhof

回答

1

你可以的typedef struct NodeNode,但typedef的未完成时,引用Node。因此您必须输入struct Node。我以前的编辑不正确,因为该结构没有名称,这会导致指针问题。

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

在整个typedef语句结束之前,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;