Код:Могу ли я наложить указатели следующим образом?
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))
{
...
}
Я хочу, чтобы проверить, если массив все равны нулю. Поэтому я, естественно, подумал о том, чтобы указать адрес массива, который также является адресом первого члена, на неподписанный тип int 32, поэтому мне нужно будет сделать это дважды, так как это 64-разрядный 8-байтовый массив. Проблема в том, что она была успешно скомпилирована, но программа вылетает каждый раз здесь.
Я запускаю свою программу на 8-битном микроконтроллере cortex-M0.
Как я ошибаюсь?
Прекратите писать такой код! Это похоже на вызов неприятностей; Учитывая, что приведения ссылаются на неопределенное поведение. Почему вы не используете 'uint32_t [2]? – Olaf
И Cortex-M0 не является 8-битным процессором! – Olaf
Почему вы не используете указатель? unsigned char * pt = array_add; if ((* (pt)! = 0) || (* (pt + 1)! = 0)) – dante