В программе приходится работать с различными битами-флагами. Для этого использую операторы #define, которые объединяются в следующие группы:
Код: Выделить всё
#define BIT_PAR n // n -- целое число от 0 до 31
#define FLAG_PAR (1<<BIT_PAR)
#define FLAG_PAR_t (var_flags&FLAG_PAR)
#define FLAG_PAR_i (var_flags^=FLAG_PAR)
#define FLAG_PAR_s (var_flags|=FLAG_PAR)
#define FLAG_PAR_c (var_flags&=~FLAG_PAR)После этого я могу простым оператором типа FLAG_PAR_x проверить, инвертировать, установить или сбросить нужный мне флаг.
Проблема в том, что таких флагов много, несколько десятков. И располагаются они в нескольких переменных. В результате листинг .h-файла сильно раздувается. И потом возникают некоторые сложности, когда нужно добавить ещё один флаг или найти нужный, Поэтому хотелось бы эти группы из 7 строк (включая пустую строку между группами для лучшей читабельности) заменить одной строкой, типа
FLAGS(var,PAR,n)
которая бы при компиляции расширялась в 6 указанных выше строк. Но что-то я никак не могу сообразить, как это сделать.