gpt4 book ai didi

c - 如何在不强制转换的情况下取消引用 void 变量

转载 作者:行者123 更新时间:2023-12-01 12:29:21 24 4
gpt4 key购买 nike

typedef void *STACK_ENTRY;

STACK_ENTRY *create_stack_entry(void *value) {
STACK_ENTRY *entry = malloc(sizeof(*value));
*entry = *value;
return entry;
}

我试图创建一个通用函数来创建一个应该能够具有任何类型的 STACK_ENTRY。所以我使用一个空指针作为参数。我使用值类型的大小分配内存,然后我想将该值提供给 STACK_ENTRY 的指针。

但是我得到以下错误:

prog.c:34:9: error: void value not ignored as it ought to be
*entry = *value;
^

我该如何解决?

最佳答案

代码需要处理大小。调用 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;
}

关于c - 如何在不强制转换的情况下取消引用 void 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35855375/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com