在我的函数中,我分配内存并填充名为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 。