[英]dereferencing pointer to incomplete type
gcc 4.4.4 c89
不知道為什么我得到這個錯誤。
在我的頭文件中,我有以下內容
句柄
typedef struct Handle_t Handle
在我的實施文件中
處理
struct Handle {
size_t id;
char *name;
};
Handle* create_handle(size_t id)
{
Handle *hdev = NULL;
hdev = malloc(sizeof(*hdev)); /* Error */
.
.
}
非常感謝您的任何建議,
以前,我經常會錯誤地鍵入 typedef
直到我開始將其分為兩個部分: type和def 。 該型第一,然后一個新的名字的Def從頭。
typedef <type> <name>;
typedef struct Handle Handle_t; /* defines Handle_t as struct Handle */
typedef char *c_string; /* defines c_string as char * */
您的結構名稱必須與typedef相匹配:
struct Handle_t {
/* ... */
};
typedef struct Handle_t Handle
您定義的結構稱為Handle
,而不是Handle_t
,這是您鍵入的內容。
typedef struct Handle_t句柄
您將定義的struct Handle_t鍵入Handle,但是結構為Struct Handle,因此將struct Hadle更改為Struct handle_t或鍵入def。
編譯器到達錯誤struct Handle_t
尚未定義struct Handle_t
。
您已經定義了一個struct Handle
和別名類型Handle
到不存在的類型struct Handle_t
。 對於C
許多事物,不存在類型是可以的,但對於sizeof
參數則不存在。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.