gcc 4.4.4 c89解引用指向不完整類型的指針
不知道爲什麼我得到此錯誤。
在我的頭文件我有以下
handle.h
typedef struct Handle_t Handle
我在執行文件
handle.c
struct Handle {
size_t id;
char *name;
};
Handle* create_handle(size_t id)
{
Handle *hdev = NULL;
hdev = malloc(sizeof(*hdev)); /* Error */
.
.
}
非常感謝您的任何建議,
我不認爲這就是爲什麼你會得到錯誤,但是你想使用sizeof(Handle),而不是sizeof(* hdev)。取消引用hdev是取消引用空指針。 – 2010-09-10 17:20:22
@Merlyn:'sizeof * hdev'是正確的(就像'sizeof(Handle)')一樣。 'sizeof'運算符不計算參數,因此NULL是不重要的。 – pmg 2010-09-10 17:25:00
@Merlyn Morgan-Graham:恰恰相反。你想特別使用'sizeof * hdev',而不是'sizeof(Handle)'。結果在兩種情況下都是相同的,但'sizeof * hdev'是一種更好的編程習慣,因爲它使代碼更獨立於類型。當然,這裏沒有空指針問題,因爲'sizeof'不會評估這個參數。 – AnT 2010-09-10 17:39:36