2014-02-27 57 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;