Цитата(*SERG @ Feb 19 2007, 05:33)

А вот такое объявление битовых переменных "не красиво" чтоли?
Красиво до тех пор пока вам не захочется одной командой сбросить или установить более одного флага, либо по ходу работы переинициализировать эту структуру любым значением, отличным от нуля. Тогда это выльется в массу писанины. Придется либо заводить временные переменные такого же типа что и структура, либо работать с указателями и явно приводить типы. А начальная инициализация любым значением кроме нуля выглядит примерно так: flag = {0,1,1,1,0,1,1,0}; и тоже совершенно нечитаема. Приходится делать запись примерно такую:
Код
flag = {
0, // skan_per
1, // timer_int1
1, // timer_int2
1, // vse_fazi
0, // knopka
1, // A5
1, // A6
0, // A7
} flag;
что требует не меньше писаниниы чем flag= (0<<SKAN_PER)|(1<<TIMER_INT_1)|(TIMER_INT_2)|(1<<VSE_FAZI)|(0<<KNOPKA)|(1<<A_5)|(1<<A_6)|(0<<A_7).
При этом оба метода имеют право на жизнь. Запись битовым полем имеет тот плюс, что компилятор не позволит вам ошибочно установить флаг в совершенно другой переменной, а при ширине битового поля более 1 бита сам подставляет нужные сдвиги и маски.