相关疑难解决方法(0)

C预处理器宏扩展

我正在尝试(我想到的)是一个简单的宏扩展

#define CLEAR_DIGIT(a,b)    iconMap[a] &= ~(b)
#define R1 4, 16
CLEAR_DIGIT(R1);
Run Code Online (Sandbox Code Playgroud)

现在我希望扩展到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);
Run Code Online (Sandbox Code Playgroud)

然后它工作正常,所以R1扩展到两个参数不是一个问题...有没有办法强制它扩展R1之前进行宏功能扩展?

c macros c-preprocessor

8
推荐指数
1
解决办法
5775
查看次数

标签 统计

c ×1

c-preprocessor ×1

macros ×1