我想将uchar数组转换为uint8指针。因为它们都是8位,值范围从0到255所以我认为它不应该导致和发布。
uchar list[100];
我必须将上面的列表传递给一个接受指向uint8t的指针的函数。 我可以这样通过:
(uint8t *)list
这样当我将其作为uint8读取时它不会影响该值。
答案 0 :(得分:0)
嗯,uchar
和uint8_t
的宽度不一定相同!从技术上讲,角色可以是16位宽。这是罕见的,但它发生了,特别是在嵌入式世界。所以uchar 可能不是8位类型,但是uint8 总是是8位类型。
如果uchar
确实不是字节,则从uchar []
转换为uint8_t *
会消除对齐限制。对于那些不支持错失对齐访问的平台(闻起来像再次嵌入!)试图像这样投射将是一个错误。如果使用GCC
进行编译,请添加-Wcast-align
标志以捕获此类问题。