ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
22 июля
1085585 Топик полностью
IBAH (12.03.2021 17:56, просмотров: 258) ответил VLLV на Странность на уровне поменял "unsigned char на uint8_t - поменялся размер прошивки" (реальный случай)
По моему никаких странностей. Компилятор видит #pragma pack, и все данные считает невыровненными, он не такой умный, чтобы считать смещение. А offsetof() его путает окончательно, он даже варнинг не выкидывает, и делает все в лоб. 
/
84            *((long*)(&(OutReg[44])))=*((long*)((char*)&Eeprom + offsetof(eeprom_t, Plan1)));
   \   000001F6   0x3158             ADDS     R1,R1,#+88
   \   000001F8   0x6BC2             LDR      R2,[R0, #+60]
   \   000001FA   0x600A             STR      R2,[R1, #+0]

   


           *((long*)(&(OutReg[44])))=Eeprom.Plan1;
   \   000001F6   0x0020             MOVS     R0,R4
   \   000001F8   0x303C             ADDS     R0,R0,#+60
   \   000001FA   0x.... 0x....      BL       __aeabi_uread4
   \   000001FE   0x0029             MOVS     R1,R5
   \   00000200   0x3158             ADDS     R1,R1,#+88
   \   00000202   0x6008             STR      R0,[R1, #+0]

/