繁体   English   中英

如何在没有强制转换的情况下取消引用void变量

[英]How to dereference a void variable without cast

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;
         ^

我该如何解决这个问题?

代码需要应对大小。 调用create_stack_entry()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;
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM