| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Битовые поля передача по аргументу |
| Автор: null56 6.5.2009, 11:29 | ||||
Я не совсем представляю, что из себя предсталяют битовые поля после компиляции и на сколько быстро идет к ним обращение по сравнению с отедельно взятой переменной, но я их использую, как флаги
Собственно хотел спросить, возможен ли такой вариант есть функция, которая принимает битовое поле и имеет возможность изменить его внутри тела? надеюсь вопрос понятен... приведу пример кода, который может сделает вопрос более конкретным
Если не сложно, дополните вопрос с пояснением.... потому что для меня битовые поля - это максимально упакованные значения, как с ними работает компилятор, я уже говорил, не представляю... Заранее благодарен за помощь |
| Автор: zim22 6.5.2009, 11:52 | ||||||
я думал, должен быть тип unsigned int
Для манипулирования битовыми полями с несколькими битами обычно используют встроенные побитовые операторы
Классы, в которых определены битовые поля обычно снабжены и встраиваемыми методами, облегчающие установку и проверку значений битовых полей. Например класс File мог содержать такие функции:
|
| Автор: math64 6.5.2009, 11:53 | ||
Получить ссылку на битовое нельзя. Можно разве что так:
|
| Автор: xvr 6.5.2009, 11:55 | ||||||||
Медленнее
|
| Автор: math64 6.5.2009, 12:00 | ||
Вместо битовых полей можно использовать маски:
Код сгенерированный компилятором будет примерно одинаковым, что и применении битовых полей. |
| Автор: null56 6.5.2009, 12:18 |
| Значит попробую сделать выводы. В С++ битовое поле призвано повысить уровень абстракции, чтобы пользователю самому не приходилось реализовывать битовые операции, но компилятор в исходном машинном коде все равно будет делать тоже самое, что и делал бы пользователь, а именно те же сбросы или выставлаения битов Сама структура с битовыми полями является байтом или более широким словом и по сути к ней можно обращаться и передавать как одну переменную и работать с ней используя битовые операции для изменения значений отдельных битов, это будет аналогично использованию возможностей компилятора по обращению к отдельным битовым полям... Если я все верно понял, то отлично... Все спасибо за подробные ответы |
| Автор: null56 6.5.2009, 12:47 | ||||
вот это верно подмечено.... по моему, проще потратить 9 байт на флаги, чем связываться с битовыми полями в моем случае... было бы их штук 30, тогда другой вопрос... хотя даже не знаю.... Вопрос такой, если мы объявляем структуру битового поля, то уже не имеем возможности обращаться к полям через собсвтенные битовые операции, только средствами компилятора? подробнее на коде... так делать никак нельзя?
|
| Автор: zim22 6.5.2009, 12:52 | ||||
и так можно:
|
| Автор: math64 6.5.2009, 13:10 | ||
|