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

 
 
> Помогите ламеру с IAR, проблема с вычислением адреса переменной
jack_avenger
сообщение Sep 3 2005, 11:17
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 170
Регистрация: 30-06-05
Из: Киев
Пользователь №: 6 426



Не пинайте за глупый вопрос я перехожу с CodeVision на IAR и ничего не понимаю.
Юзаю IAR 4.11A
Надо получить старшую часть адреса переменной в RAM.
Пробую что-то типа

int Variable=1;
char AddrH=(char)((&Variable)>>8);
не катит (матерится компилятор). А если написать так:
int Variable=1;
char AddrH=(char)(&Variable);
то все гуд, но понятно что получаю младшую часть.

Как надо правильно писать?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ValeraVi
сообщение Sep 7 2005, 18:03
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 44
Регистрация: 30-07-05
Из: Kyiv, Ukraine
Пользователь №: 7 211



1. void запросто можно использовать с указателями на массивы (и др.). А если точнее, то void* это указатель на "ничто" smile.gif поэтому тут уже нет разницы какой указатель (на строку, на функцию, на массив int и т.п.) вы приводите к типу void*

2.
2 jack_avenger
Чтоб ваш код откомпилился нужно написать так:
char cChar;
char xChar[10];
void *pVoid;
pVoid=&cChar;
*((char*)pVoid) = 1;
т.е., т.к void - это "ничто", то в этом "ничто" трудно выделить элемент, в который вы хотите затолкнуть 1, поэтому указатель на "ничто" нужно к чему-то привести (например к char), а потом уже в него записывать 1.
НО, как сказал phantom - между указателем на массив char (строкой) и просто char (частный случай массива char размером = 1 элемент) разницы нет (и в том и в другом случае указатель - указывает на char) поэтому проще написать так:
char cChar;
char xChar[10];
char *pVoid;
pVoid=&cChar;
pVoid=xChar; //т.к массив char'ов это есть указатель на 0-й char.
*pVoid = 1;
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- jack_avenger   Помогите ламеру с IAR   Sep 3 2005, 11:17
- - aal   Во первых Variable должна быть статик, чтоб по адр...   Sep 3 2005, 11:25
- - jack_avenger   Цитата(aal @ Sep 3 2005, 14:25)Во первых Vari...   Sep 3 2005, 11:34
- - INT1   не работал с Кодевижн, но может быть связано с ...   Sep 3 2005, 11:37
- - aal   >Значит преобразование от int к char за меня сд...   Sep 3 2005, 12:00
|- - Petka   Цитата(aal @ Sep 3 2005, 15:00)А в реал перев...   Sep 7 2005, 18:26
- - jack_avenger   Решил не возится с адресами переменных (умные люди...   Sep 5 2005, 12:38
- - jack_avenger   Уже понял. Вот как надо: struct Value; struct Tre...   Sep 5 2005, 13:54
- - ValeraVi   я б написал примерно так: struct Value_tag; typed...   Sep 5 2005, 17:08
- - jack_avenger   Большое спасибо всем ответившим. У меня еще один ...   Sep 7 2005, 12:37
|- - BVU   Цитата(jack_avenger @ Sep 7 2005, 16:37)Больш...   Sep 7 2005, 12:51
- - phantom   "Нужен указатель, который может ссылается раз...   Sep 7 2005, 13:32
- - MALLOY2   Цитата(BVU @ Sep 7 2005, 15:51)Цитата(jack_av...   Sep 7 2005, 14:19
- - BVU   "void * MyPTR; // указатель на viod" Т...   Sep 7 2005, 14:35
|- - ObitJr   Цитата(BVU @ Sep 7 2005, 16:35)"void * M...   Sep 7 2005, 18:09


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

 


RSS Текстовая версия Сейчас: 24th July 2025 - 01:01
Рейтинг@Mail.ru


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