typedef void *STACK_ENTRY;
STACK_ENTRY *create_stack_entry(void *value) {
STACK_ENTRY *entry = malloc(sizeof(*value));
*entry = *value;
return entry;
}
我试图创建一个通用函数来创建一个
STACK_ENTRY
,使其能够拥有任何类型。因此,我使用了一个void指针作为参数。我分配了与该值类型大小相同的内存,然后我想将该值赋给STACK_ENTRY
的指针。但是,我遇到了以下错误:prog.c:34:9: error: void value not ignored as it ought to be
*entry = *value;
^
我该怎样解决这个问题?
STACK_ENTRY *
, 然后对这个非空指针进行解引用。 - chux - Reinstate Monicacreate_stack_entry()
的样例用法可以澄清你的需求。 - chux - Reinstate Monicasizeof(*value)
,而应该使用sizeof(*entry)
。因为 void 类型的 sizeof 是未定义的,在 GCC 扩展中是 1。 - user3528438