ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
18 мая
477298 Топик полностью
MBedder, терминатор (30.12.2013 01:09 - 01:14, просмотров: 298) ответил Юра на Не знаю как это получится при форматировании, но можно примерно так:
Для читабельности: //Сначала пишем таблицу. #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. Так это же придется проделать несколько сотен/тысяч раз - на каждый новый бит?