Цитата(ViKo @ Apr 14 2016, 15:44)

Потому что у битовых полей их расположение в слове не определено точно, с какого бита начинается - с младшего или старшего, и может оказаться не совпадающим с расположением битов в регистрах.
Это имеет значение только если менять компилятор или платформу с ABI. Если менять платформу - платформозависимый код с ковырянием в регистрах в любом случае придется выкинуть и написать с начала. Да и компиляторы кмк меняют туда-сюда редко. К тому же скорее всего компиляторы на одной платформе будут раскидывать бит филды одинаково. В противном случае да, определение структуры придется поправить. Но не используемых перечислений и т.д.
Цитата(Baser @ Apr 14 2016, 15:55)

Ключевое слово - должен. Но не обязан.
На практике оптимизируют.
Цитата(Baser @ Apr 14 2016, 15:55)

Долго думал, что есть "тайпкасты" - это вы приведение типов имеете ввиду?

Приведение типов можно применять только на свой страх и риск, когда точно знаешь что будет делать компилятор.
В части битовых полей это очень рисковано.
Они самые. Почему опасней-то в глубине это указатель на регистр или на копию его содержимого. Всё что раньше работало с ними будет однозначно продолжать работать.
Цитата(Alechek @ Apr 14 2016, 16:44)

Сделает, при включенной оптимизации.
Но вот только если переменная не volatile. Коими практически всегда являются регистры.
Ну да. Мне обычно нужно было менять одиночные поля, поэтому эта деталь кмк мало влияет на реальное применение. Для атомарности нужна временная переменная.