簡體   English   中英

取消引用不完整類型的指針

[英]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直到我開始將其分為兩個部分: typedef 第一,然后一個新的名字的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.

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