Я пытаюсь сделать (то, что я думал бы) было простое расширение макроса
#define CLEAR_DIGIT(a,b) iconMap[a] &= ~(b)
#define R1 4, 16
CLEAR_DIGIT(R1);
Теперь я ожидаю, что это расширится до CLEAR_DIGIT (4,16), который расширяется до iconMap [4] & = ~ 16 Однако это не так ... Если я сделаю CLEAR_DIGIT функцией:
void ClearDigit(unsigned char a, unsigned char b)
{
iconMap[a] &= ~b;
}
#define R1 4, 16
ClearDigit(R1);
, тогда она будет работать нормально, поэтому расширение R1 до двух аргументов не представляет проблемы... Есть ли способ заставить его расширять R1 перед выполнением расширения макрофункции?