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

 
 
> iar struct union как указать смещение?
AndryG
сообщение Feb 14 2015, 20:10
Сообщение #1


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

Группа: Свой
Сообщений: 139
Регистрация: 23-05-05
Из: UA
Пользователь №: 5 317



Имеем, для примера, вот такой тип данных, в котором хотим обеспечить к массиву данных доступ к нужным полям по разному "подходу".

Код
typedef union{
  uint8_t raw[4]; // head, bodyA, bodyB, tail
  struct{
    uint8_t b;
  } body;
  uint8_t bodyA;
  uint8_t tail;
} my_t


Понятно, что всё работает неверно. Вопрос: возможно ли указать полям дополнительно смещение? Если да, то как ?

Совет "расположи поля в объединении в нужном порядке" не предлагать. Это лишь пример для обяъснения проблемы. В моем случае необходимо именно указать смещение.

Единственный вариант вижу в объявлении дополнительным полей-проставок, которые будут смещать на нужное место поля. Но и то сработает не везде.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AndryG
сообщение Feb 15 2015, 19:11
Сообщение #2


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

Группа: Свой
Сообщений: 139
Регистрация: 23-05-05
Из: UA
Пользователь №: 5 317



Цитата
Опишите почему вам понятно "что работает неверно".


my_t.body.b ссылается на байт "bodyA" (см. коммент raw[]), а по смыслу должно на "bodyB"
my_t.bodyA ссылается на "head", а ожидается (из названия) на второй байт "bodyA"
my_t.tail ссылается на "head", а ожидается (из названия) на четвертый байт "tail"

megajohn, в вашем примере t.s.body.b = 2; t.s.bodyA = 3 неверно ссылаются.


У меня есть массив данных. Одна функция работает со всем массивом data[].
Второй функции интересны в этом массиве только некоторые участки (первый, пятый, девятый-десятый байты, для примера)
Третья должна видеть этот массив сосвсем иначе...
Вот я и хочу сделать объединение:
Код
union{
  raw[10]
  v1: struct{
    b1 -- указывает на верное место
    b5 -- указывает на второй байт, а хочется на пятый
    w5-- указывает на третий байт, а хочется на девятый
  }
}

Другими словами, я хочу указать полю структуры адрес (относительно его головы).

SSerge с превращением объединения в структуру это вы верно подметили sm.gif

Раз звучат только уточняющие вопросы, значит я слишком много хочу...

Go to the top of the page
 
+Quote Post
scifi
сообщение Feb 16 2015, 08:23
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(AndryG @ Feb 15 2015, 22:11) *
У меня есть массив данных. Одна функция работает со всем массивом data[].
Второй функции интересны в этом массиве только некоторые участки (первый, пятый, девятый-десятый байты, для примера)
Третья должна видеть этот массив сосвсем иначе...

Странные желания. Впрочем, пока не описана суть задачи, трудно судить. Может быть, расскажете, зачем всё это? Тогда можно будет предложить что-нибудь из того, что есть в языке Си.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- AndryG   iar struct union как указать смещение?   Feb 14 2015, 20:10
- - kolobok0   Цитата(AndryG @ Feb 14 2015, 23:10) ...По...   Feb 15 2015, 10:28
- - SSerge   Цитата(AndryG @ Feb 15 2015, 03:10) Вопро...   Feb 15 2015, 10:45
- - megajohn   Цитата(AndryG @ Feb 14 2015, 23:10) Понят...   Feb 15 2015, 17:58
|- - megajohn   Цитата(AndryG @ Feb 15 2015, 22:11) У мен...   Feb 16 2015, 07:32
||- - Сергей Борщ   Цитата(megajohn @ Feb 16 2015, 09:32) дык...   Feb 16 2015, 07:57
|- - kolobok0   Цитата(AndryG @ Feb 15 2015, 22:11) ...Ра...   Feb 16 2015, 09:26
- - SSerge   Кодtypedef union{ uint8_t raw[4]; // hea...   Feb 15 2015, 20:08
- - AndryG   megajohn, вот и я кроме как вставлять "распор...   Feb 16 2015, 10:32
|- - scifi   Цитата(AndryG @ Feb 16 2015, 13:32) Вмест...   Feb 16 2015, 10:39
|- - kolobok0   Цитата(AndryG @ Feb 16 2015, 13:32) ...Я ...   Feb 17 2015, 21:46
|- - SSerge   Цитата(kolobok0 @ Feb 18 2015, 04:46) И п...   Feb 18 2015, 12:40
- - AndryG   scifi, да я ради интереса включил MISRA посмотреть...   Feb 16 2015, 10:55
|- - scifi   Цитата(AndryG @ Feb 16 2015, 13:55) Вот я...   Feb 16 2015, 11:17
- - AndryG   SSerge, именно из-за разных форматов я хочу переда...   Feb 18 2015, 12:58


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

 


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


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