Цитата(amost @ Jun 19 2010, 12:18)

может наверняка есть какой-то более удобный метод. макрос, определяющий имя байта с флагами по имени бита, что-ли.
С gcc практически не работаю, но сам под ИАРом использую вот такое описание флагов в отдельном файле (см внизу)
Как это макросами развернуть - не показываю, ибо проклянете

На самом то деле тот метод, который используете, имеет множество достоинств. Ну включите в имя маски имя переменной, чтобы не ошибиться.
Код
/* name var bit */
FLAG ( eeprom_good ,flags, 0x0001U )
FLAG ( low_power_enable ,flags, 0x0002U )
FLAG ( factory_flag ,flags, 0x0004U )
FLAG ( service_calibration ,flags, 0x0008U )
FLAG ( remote ,flags, 0x0010U )
FLAG ( show_value ,flags, 0x0020U )
FLAG ( blink ,flags, 0x0040U )
FLAG ( missing_pulses ,flags, 0x0080U )
FLAG ( remote_change_enabled ,flags, 0x0100U )
FLAG ( booster_filled ,flags, 0x0200U )
FLAG ( refilling ,flags, 0x0400U )
FLAG ( conc_change_enable ,flags, 0x0800U )
FLAG ( delivery_passive ,flags, 0x1000U )
FLAG ( start_user_menu ,flags, 0x2000U )
FLAG ( process_happened ,flags, 0x4000U )
//FLAG ( block_booster_error ,flags, 0x8000U )
FLAGS_VARIABLE ( flags )
Уходя, оставьте свет...