在我的函数中,我分配内存并填充名为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再见地址吗?但这不符合我可以分配相同大小的uint8_t *的事实。

最佳答案

我认为警告是关于其他一些论点的。请提供该行的完整代码,sendBuf()函数的原型(prototype)以及相关行的完整编译器警告。

通常,sendBuf()函数可能应使用const void *而不是const uint8_t *来发送数据。见send()和 friend 。

10-01 12:02