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