On Sat, 28 May 2011, Dmitry E. Oboukhov wrote:
мы микроконтроллеры программируем. поскольку там на борту всего 0.5-1К RAM то эта RAM экономится жестко. соответственно всякие поля зачастую упаковываются в байты: struct something { uint8_t type; union { struct { unsigned flag1:1; unsigned field1:5; unsigned field2:2; }; struct { unsigned bla:2; int ble:3; int bee:3; }; }; } в зависимости от типа type либо одна часть либо другая часть union актуальна. ну и можно сюда добавить uint8_t data и проинициализировать union скажем числом 0x23, но это будет довольно * нечитабельно * болезненно переживать смену порядка/набора полей в union --
Немного не в тему. Так, информация для размышления. Недавно для себя выяснил, что битовые поля могут подложить каку: 1) Медленно работают. Переход на маски дал увеличение скорости в два раза. 2) С некоторыми типами памяти gcc может дать неправильно работающий код: http://www.coranac.com/documents/working-with-bits-and-bitfields/ (сам не проверял). Ну и да, процессор- компайлер- зависимо. Но тут видимо вообще никак. Ю.