реклама на сайте
подробности

 
 
> Уровень оптимизации компилятора и глобальные переменные
_Mikhail_
сообщение Aug 21 2013, 09:15
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 55
Регистрация: 19-04-11
Пользователь №: 64 477



Добрый день!
Среда разработки 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

Указатели в модуле объявляются глобально.
В "чистом" проекте данный код работает нормально.

В чем может быть проблема?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 13:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.0136 секунд с 7
ELECTRONIX ©2004-2016