Re: структуры в C/gcc
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/
(сам не проверял).
Ну и да, процессор- компайлер- зависимо.
Но тут видимо вообще никак.
Ю.
Reply to: