0

uint8_t長さ 32の配列に対して操作を行う関数があります。これ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 に答える