Re[3]: выравнивание битовых полей в структуре
От: Alex34 Израиль  
Дата: 04.05.08 11:42
Оценка:
Здравствуйте, 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>и соответствовали размеру.

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

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

Все это написал , надеясь что понял твою проблему.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.