unsigned char array_add[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
...
if ((*((uint32_t*)array_add)!=0)||(*((uint32_t*)array_add+1)!=0))
{
...
}
私は、アレイがすべてゼロであるかどうかを確認したいです。当然、私は配列のアドレスをキャストすることを考えました。これは、最初のメンバのアドレスでもあり、unsigned int 32型になりました。したがって、これを2回行う必要があります。これは、64ビット、8バイトアレイ。問題は、正常にコンパイルされましたが、プログラムがここで毎回クラッシュすることです。
私は8ビットマイクロコントローラ、cortex-M0でプログラムを実行しています。
私は間違っていますか?
このようなコードの作成をやめてください!それはトラブルを呼び起こすように見える。キャストが未定義のビヘイビアを呼び出すことを考慮する。なぜあなたは 'uint32_t [2]を使わないのですか? – Olaf
Cortex-M0は8ビットCPUではありません! – Olaf
ポインタを使用するだけの理由はありますか? unsigned char * pt = array_add; if((*(pt)!= 0)||(*(pt + 1)!= 0)) – dante