Здравствуйте! Хочу поделиться глюком, найденным мной:
unsigned short w;
w=0x55AA; uart(w); //Вывод в UART - вижу 55AA ((unsigned char*)&w)[0]=0x33; uart(w); //Вывод в UART - вижу 0033
Съел старший байт (обнулил) !!!
Если где-то в программе используется обращение к ((unsigned char*)&w)[1] то все нормально. Отключал оптимизацию - не помогло. А так вроде-бы нормальная конструкция для любого С... !?!?!
|