0

我有一个对长度为 32 的数组执行操作的函数uint8_t。我想将一个uint16_t长度为 16 的数组传递给它,并让它逐字节地对该数组执行相同的操作。

我试过这样做:

uint8_t byteArray[32];
void function(uint16_t *inArray)
{
    byteArray = (uint8_t *) inArray;
    ... do the byte-by-byte operations on byteArray
}

但我得到了错误:

从类型'uint8_t *'分配给类型'uint8_t [32]'时不兼容的类型

有谁知道我做错了什么?

4

2 回答 2

1
uint8_t byteArray[32];

你不能分配给byteArray. 它是一个数组,因此在 C 中不可修改。您可以改用指针或重新考虑您在做什么:强制转换本身就是一种代码味道,应该避免。

既然您提到您有一个对此进行操作的函数,那么让该函数接受参数不是比使用全局对象更好吗?

于 2013-03-26T18:21:58.057 回答
0

数组是元素的集合,它不能像 C 中那样分配(更不用说类型转换)。您可以逐个元素地循环使用它,或者重新考虑您正在做什么以在任何地方使用相同的类型。

于 2013-03-26T18:24:40.720 回答