Юра (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.