Доступ к членам структуры по ее адресу.

Низкоуровневое программирование портов, микроконтроллеров и т.д.

Модератор: Andy

SL
Сообщения: 8
Зарегистрирован: 21 янв 2005, 22:52

Смею Вам возразить, господин Romeo.
... ни один язык программирования, даже высокоуровневый, в том числе и С++, не может обращаться к элементам структуры, если он об этой структуре ничего не знает.
Конечно Вы правы, но, мне кажется, следует разделять "знание" о типе переменной и "знание" о самой переменной (метка на область памяти, указатель).
Мне кажется, должен существовать какой-то "нормальный" способ доступа с членам объекта структуры зная только ее тип (то есть имея доступ к ее объявлению) и адрес объекта.
Область видимости я упомянул в качестве примера, возможно неудачно (кстати, почему?). На самом деле проблема возникла из-за жгучего желания разместить объект структуры в стеке, а не в сегменте данных (что бы позволило иметь метку), и передавать ее адрес в другие процедуры.
Использование включаемых файлов не решает проблему, поскольку я не могу скомпилировать даже 1 файл, где и так есть объявление структуры.
Надеюсь смог наконец объяснить сущность проблемы. :)
Если я в чем-то не прав, покорнейше прошу объяснить. Возможно есть какие-то другие пути решения, я их пока в упор не вижу.

С наилучшими пожеланиями, SL.
SL
Сообщения: 8
Зарегистрирован: 21 янв 2005, 22:52

2Andy: именно этим способом я сейчас и пользуюсь, но мне он ужасно не нравится, особенно в свете того, что в скором планируется изменить размер членов.
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Господин SL, предлагаю пользовать и дальше тем способом, который предложил глубокоуважаемый Andy. Почему? Да потому, что именно в такой (с точностью до переобозначений) код превращает С-компилятор обращения к членам С-структур. Что может быть более показательным? :)
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
SL
Сообщения: 8
Зарегистрирован: 21 янв 2005, 22:52

Глубокоуважаемый господин Romeo, предложение принимаю. :)
Но как только найду более приемлимый способ, обещаю уведомить о нем, дабы в будущем никто не утруждал себя больше утомительным поиском таких мелочей.

В любом случае, спасибо вам, Romeo и Andy, за участие.
Ответить