ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
3 июля
1020644
il-2 (24.07.2020 14:56, просмотров: 8511)
По поводу грабель компиляторов: 

Давно написан и работал такой код:

unsigned long const SettingsVar[FLASH_PAGE_SZ] __attribute__ ((aligned(FLASH_PAGE_SZ)));

...

if ( SettingsVar[FLASH_PAGE_SZ-1] == 0xAAAAAAAAul )
{
... operator;
}

SettingsVar занимает сектор Flash-памяти STM32 и используется для перезаписи настроек. При выключенной оптимизации все работало.

При включенной оптимизации компилятор выкидывает приведенное в примере условие и содерджимое (operator;).

Кто догадается - почему? :-)