ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
18 мая
477297 Топик полностью
Юра (30.12.2013 01:02, просмотров: 1) ответил MBedder на Новогодняя хотелка - как в compile time выдрать численное значение НОМЕРА бита из битовой структуры?
Не знаю как это получится при форматировании, но можно примерно так: //Сначала пишем таблицу. #define COMMON_TABLE( X_MACRO ) \ X_MACRO( a, 1 ) \ X_MACRO( b, 1 ) \ X_MACRO( c, 1 ) //Потом превращаем ее в структуру. #define EXPAND_AS_STRUCT( x, y ) unsigned char x : y; typedef struct{ COMMON_TABLE( EXPAND_AS_STRUCT ) }_COMMON_TABLE_STRUCT_t; // Потом номера бит помещаем в энум. #define EXPAND_AS_ENUM( x, y ) bitpos_ ## x, typedef enum{ COMMON_TABLE( EXPAND_AS_ENUM ) }_COMMON_TABLE_ENUM_t; //Итого: int main() { char q=0; q|=(1<<bitpos_c); return 0;} То есть номера бит видятся как bitpos_a, bitpos_b, bitpos_c.