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;
^
我该如何解决?
答案 0 :(得分:4)
代码需要应对大小。调用create_stack_entry()
时传递大小。不需要演员表。
// STACK_ENTRY *create_stack_entry(void *value)
STACK_ENTRY *create_stack_entry(void *value, size_t size) {
STACK_ENTRY *entry = malloc(size);
if (entry) memcpy(entry, value, size);
return entry;
}