gpt4 book ai didi

从 void * 转换为使用 htonl

转载 作者:太空宇宙 更新时间:2023-11-04 08:14:02 24 4
gpt4 key购买 nike

我在结构中有一个 void * 值,我需要通过套接字将它发送到服务器。我知道我需要使用

int value = htonl(kv->value);

编译器报错

passing argument 1 of ‘htonl’ makes integer from pointer without a cast [-Werror]

我还尝试将 void * 转换为 int,但没有用,我使用了

htonl(*kv->value);

但这也引发了错误。如何让 void * 成为正确的数据类型?

旁注:结构不可编辑,因为我正在编写框架。

struct kvpair {
void *value;
};

最佳答案

您不能直接取消引用 void * 类型,您必须先将其转换为可以取消引用和取消引用的对象。

例如

uint32_t value = htonl(*(uint32_t *) kv->value);

此转换和取消引用要求 kv->value 实际上指向您尝试将其转换为的类型。如果在您的代码中,kv->value 指向单个 short 值,则上述转换和取消引用将导致未定义的行为

关于从 void * 转换为使用 htonl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36896452/

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