簡體   English   中英

C中的未知類型名稱錯誤

[英]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 LLNodeLLNode

typedef直到結尾都是不完整的,因此LLNodestruct不能用作類型名稱。 但是, struct 標記將可用,因此您可以執行以下操作:

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

這將產生一個struct具有相同的結構,什么是在您的文章,因為struct LLNodetypedef -ed到LLNode

您可以使用:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM