Здравствуйте, 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>Все это написал , надеясь что понял твою проблему.
Спасибо за совет, мне уже подсказали как решить проблему в моем случае. Я тоже стараюсь
не использовать битовые поля для создания буфера, просто в данном случае программа является
иммитатором, и не требует переносимости, а так как надо написать в кротчайший срок решил использовать
битовые поля, сейчас все работает.