2

我想将一个 uchar 数组转换为 uint8 指针。由于两者都是 8 位,值范围从 0 到 255,所以我认为它不应该引起和问题。

uchar list[100];

我必须将上面的列表传递给一个接受指向 uint8t 的指针的函数。我可以这样通过吗:

(uint8t *)list

这样当我将其读取为 uint8 时它不会影响该值。

4

1 回答 1

0

好吧,uchar不一定uint8_t是一样的宽度!从技术上讲,一个字符可以是 16 位宽。这是一种罕见的情况,但它会发生,尤其是在嵌入式世界中。所以 uchar可能不是 8bit 类型,但 uint8始终是 8bit 类型。

如果uchar确实不是字节,则转换 from uchar []touint8_t *消除了对齐限制。对于不支持未对齐访问的平台(闻起来像再次嵌入!)尝试像这样进行投射将是一个错误。如果您使用 编译,请GCC添加-Wcast-align标志以捕获此类问题。

于 2014-03-23T13:16:24.367 回答