[英]Unknown type name error in C
我正在嘗試使用C進行一些基本的數據結構設計。很長一段時間后,我將重新使用C。 這是我的簡單struct
:
typedef struct
{
int data;
LLNode *next; //Error: unknown type name 'LLNode'
}LLNode;
但是它給出了如上所述的編譯錯誤。 是因為在編譯struct
編譯器時不知道LLNode
的存在嗎? 這意味着我必須先在struct
之前聲明LLNode
。 是這樣嗎 如果是,我應該怎么做?
這樣做:
typedef struct LLNode LLNode;
struct LLNode {
int data;
LLNode *next; //No error
};
在定義LLNode
類型之前,不能使用它。 使用此方法,您首先要聲明LLNode
。 即使尚未定義struct LLNode
,此聲明也足以聲明LLNode *
成員(但您尚未聲明LLNode
成員),因為指針的大小不取決於指針的類型。
結構的next
數據成員被聲明為LLNode
類型,這是未知的。
更正的例子
typedef struct LLNode
{
int data;
struct LLNode *next; //Error: unknown type name 'LLNode'
}LLNode;
請注意,結構標記名稱和typedef名稱位於不同的名稱空間中。 因此,您可以同時使用這兩個名稱,例如struct LLNode
和LLNode
。
typedef
直到結尾都是不完整的,因此LLNode
在struct
不能用作類型名稱。 但是, struct
標記將可用,因此您可以執行以下操作:
typedef struct LLNode
{
int data;
struct LLNode *next;
} LLNode;
這將產生一個struct
具有相同的結構,什么是在您的文章,因為struct LLNode
是typedef
-ed到LLNode
。
您可以使用:
typedef struct LLNode LLNode;
struct LLNode
{
int data;
LLNode *next;
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.