gpt4 book ai didi

c - 转换为 uint8_t * 的结构指针会引发错误

转载 作者:行者123 更新时间:2023-12-03 18:28:12 25 4
gpt4 key购买 nike

在我的函数中,我为一个名为 messagePacket 的结构分配内存并填充

struct messagePacket *packet = malloc(sizeof(struct messagePacket));
//fill

当我尝试将指针转换为 (uint8_t *) 时,gcc 会抛出一条警告:大整数隐式截断为无符号类型

sendBuf(..., (uint8_t *)packet);

我已经能够很好地完成以下操作,而且我知道我可以使用这种方法作为解决方法。我来这里是因为我宁愿从中学习,也不愿解决它。

uint8_t *buf = malloc(sizeof(struct messagePacket));

struct messagePacket = 1209 B 的大小。我最好的猜测是内存块超大以至于我存储在高内存地址中,例如 16 字节地址?但这不符合我可以 malloc 相同大小的 uint8_t * 的事实。

最佳答案

我猜编译器会注意到您的结构大于 8 位,并且使用 uint8_t 您将只会寻址结构的第一个字节。由于这似乎是有意为之,您可以转换为 (void *),然后转换为 (uint8_t *)。但是你应该告诉 sendBuf 缓冲区大小是 sizeof(struct messagePacket)

关于c - 转换为 uint8_t * 的结构指针会引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10329034/

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