ALTE DOCUMENTE
|
|||||
Когда вопрос экономии п 15515m1218p амяти становится очень существенным, то может оказаться необходимым помещать в одно машинное слово несколько различных объектов; одно из особенно распространенных употреблений - набор однобитовых признаков в применениях, подобных символьным таблицам компилятора. внешне обусловленные форматы данных, такие как интерфейсы аппаратных средств также зачастую предполагают возможность получения слова по частям.
char int
#define keyword 01
#define external 02
#define static 04
flags external static
external static flags
flags &= ~( external static
if flags & (external static
Хотя этими идиомами легко овладеть, язык «C» в качестве альтернативы предлагает возможность определения и обработки полей внутри слова непосредственно, а не посредством побитовых логических операций. Поле - это набор смежных битов внутри одной переменной типа int обработки полей основывается на структурах. Например, символьную таблицу конструкций #define
struct
flags;
flags unsigned
flags.is_statie,
flags.is_extern,
flags.is_keyword
flags.is_extern = flags.is_static = 1;
flags.is_extern = flags.is_static = 0;
if(flags.is_extern == 0 && flags.is_static == 0)...
int int int
int unsigned &
|