2 つの 1 バイト値を含む配列を関数に渡す状況がありますが、どういうわけか、関数は配列の長さが 4 バイトであると認識し、ビット操作が大幅に台無しになります。各配列値を , として明示的にキャストしようとしましたuint8
が、役に立ちませんでした。何が起こっているのかについてのアイデアはありますか? Eclipse Mars.1 で cygwin の gcc ツールを使用します。
typedef char uint8; //char is 1 byte in my system.
void setBitArray(uint8 bitArray[], int first, int last, uint8 type) {
if(first >= 0 && last < sizeof(bitArray) * 8) { // If the block is in bounds
...
}
}
...
int main() {
uint8 bitArray[2] = {(uint8)0, (uint8)0};
setBitArray(bitArray, 0,10, 1);
return 0;
}
編集
もう一つ。sizeof(bitArray) は、main() で 2 バイトを生成します。