Re[4]: выравнивание битовых полей в структуре
От: Alirp Россия  
Дата: 04.05.08 12:22
Оценка:
Здравствуйте, Alex34, Вы писали:

A>Здравствуйте, Alirp, Вы писали:


A>>Здравствуйте, Alex34, Вы писали:


A>>В моем случае я использую битовые структуры следующим образом:


A>>unsigned char *send_buf;

A>>send_buf = new гтышптув char [MAX_LEN_BUF];
A>>_mass_1 *s = (_mass_1 *) &send_buf[0];

A>>Причем может идти подряд ни одна битовая структура, поэтому важно чтобы данные шли подряд

A>>и соответствовали размеру.

A>судя по всему речь идет у тебя об отображении буффера канала связи на структуру данных в памяти , которая по этому каналу передаються.

A>Мы раньше тоже так делали , но после некоторых проблем поменяли концепцию.
A>Во первых проблема , которую ты упомянул. Нельзя надеятся на компилятор , как он разместит данные в памяти. Во вторых всевозможные проблемы с Big/Little Endian и т.д.

A>Мы создали фреймворк который производит сериализацию/десериализацию данных в буффер сообщения учитывая позицию каждого элемента в битах и длину этого елемента в битах. То есть буффер сообщения СТРОИТСЯ , а не ОТОБРАЖАЕТСЯ на память.


A>Все это написал , надеясь что понял твою проблему.


Спасибо за совет, мне уже подсказали как решить проблему в моем случае. Я тоже стараюсь
не использовать битовые поля для создания буфера, просто в данном случае программа является
иммитатором, и не требует переносимости, а так как надо написать в кротчайший срок решил использовать
битовые поля, сейчас все работает.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.