Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Битовые поля, Максимальна длина 
:(
    Опции темы
mes
Дата 28.3.2010, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Neox_GeForce @  28.3.2010,  16:29 Найти цитируемый пост)
мне на С надо. 

Цитата(Neox_GeForce @  28.3.2010,  16:14 Найти цитируемый пост)
noname00.c:19: error: `Bits' undeclared (first use in this function)

Цитата(Neox_GeForce @  28.3.2010,  16:14 Найти цитируемый пост)
Bits BW;

в С нужно явно указывать что тип являются структурой, т.е
Код

struct Bits BW;




--------------------
PM MAIL WWW   Вверх
SABROG
Дата 28.3.2010, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 4
Всего: 91



Цитата(mes @  28.3.2010,  17:14 Найти цитируемый пост)
работает то нормально, но порядок байт "не учитывает".


Цитата(azesmcar @  28.3.2010,  17:21 Найти цитируемый пост)
Allocation of bit-fields within a class object is implementationdefined. Alignment of bit-fields is implementation defined.


То есть при соблюдении следующих условий проблем никогда не возникнет? :

- объект создается динамически программой и используется только внутри этой программы
- объект существует пока программа работает
- объект не должен передаваться между разными модулями программы (.dll, .exe и т.п.), если модули могли быть написаны на разных языках  программирования или собраны разными компиляторами, а также сохраняться на диск или передаваться во внешний источник
- программа должна быть пересобрана заново на новой архитектуре, перенос исполнимого файла между компьютерами не допускается


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
mes
Дата 28.3.2010, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



SABROG, не слишком ли много условностей ? к тому же по большей мере не относящейся к так называемой проблеме, о которой ведете речь..


Цитата(SABROG @  28.3.2010,  17:53 Найти цитируемый пост)
объект создается динамически программой и используется только внутри этой программы

это вообше каким боком тут ?

Цитата(SABROG @  28.3.2010,  17:53 Найти цитируемый пост)
- объект существует пока программа работает

а это ?

Цитата(SABROG @  28.3.2010,  17:53 Найти цитируемый пост)
объект не должен передаваться между разными модулями программы (.dll, .exe и т.п.), если модули могли быть написаны на разных языках  программирования или собраны разными компиляторами,

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

Цитата(SABROG @  28.3.2010,  17:53 Найти цитируемый пост)
а также сохраняться на диск 

Если предназначен для чтения той же самой программой, то никаких проблем..

Цитата(SABROG @  28.3.2010,  17:53 Найти цитируемый пост)
- программа должна быть пересобрана заново на новой архитектуре, перенос исполнимого файла между компьютерами не допускается 

Ну а битовые поля тут при чем ?

Это сообщение отредактировал(а) mes - 28.3.2010, 20:19


--------------------
PM MAIL WWW   Вверх
SABROG
Дата 28.3.2010, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 4
Всего: 91



Цитата(mes @  28.3.2010,  20:19 Найти цитируемый пост)
получить проблему можно легко, не имея ни модулей, ни других языков, просто приведя многобайтовое значение к битовой структуре.


В той же программе? То есть я создал объект, затем сделал memcpy как для unsigned char* по другому адресу и получил косяк при обратном преобразовании?


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
mes
Дата 29.3.2010, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(SABROG @  28.3.2010,  21:41 Найти цитируемый пост)
как для unsigned char*

Цитата(mes @  28.3.2010,  19:19 Найти цитируемый пост)
многобайтовое значение

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

Цитата(SABROG @  28.3.2010,  21:41 Найти цитируемый пост)
по другому адресу и получил косяк 

адрес не причем, ну и само битовое представление тоже косвенно..
важен привод к другому типу, например
А а = *(А*) &i;  // i - int, sizeof(a) == sizeof (i);
то результат неопределен (будет зависеть от платформы)
хотя на приведенную конструкцию компилятор должен закричать, но от memcpy уже не спасет.


Цитата(SABROG @  28.3.2010,  21:41 Найти цитируемый пост)
при обратном преобразовании? 

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





--------------------
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0469 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.