Добрый день! Среда разработки Keil 4.72, мк LPC2478.
typedef unsigned int * pInt32U;
#define Adr 0xE0084000
pInt32U a = (pInt32U)Adr ; pInt32U b = (pInt32U)Adr +1; pInt32U c = (pInt32U)Adr +2; pInt32U d = (pInt32U)Adr +3;
В результате: a = 0xE0084000, b = 0xE0084004, c = 0xE0084008, d = ЛЕВЫЙ АДРЕС!!!!
Если отключить оптимизацию компилятора (Level 0 -O0), то результат становится ожидаемым: a = 0xE0084000, b = 0xE0084004, c = 0xE0084008, d = 0xE008400C
Указатели в модуле объявляются глобально. В "чистом" проекте данный код работает нормально.
В чем может быть проблема?
|