gpt4 book ai didi

C 预处理器宏扩展

转载 作者:太空狗 更新时间:2023-10-29 17:01:35 26 4
gpt4 key购买 nike

我想做的(我本以为)是一个简单的宏展开

#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?

最佳答案

您可以使用辅助宏。另见 double-stringize problem

#define CLEAR_DIGIT_HELPER(a,b) iconMap[a] &= ~(b)
#define CLEAR_DIGIT(x) CLEAR_DIGIT_HELPER(x)
#define R1 4, 16
CLEAR_DIGIT(R1);

关于C 预处理器宏扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8587965/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com