C pre-processor macro expansion
我想做的是一个简单的宏观扩展
1 2 3 | #define CLEAR_DIGIT(a,b) iconMap[a] &= ~(b) #define R1 4, 16 CLEAR_DIGIT(R1); |
现在我希望扩展到清除扩展到iconmap[4]&;=~16的数字(4,16)但是,它不…如果我把一个函数的数字弄清楚:
1 2 3 4 5 6 | void ClearDigit(unsigned char a, unsigned char b) { iconMap[a] &= ~b; } #define R1 4, 16 ClearDigit(R1); |
号
然后它就可以工作了,所以将r1扩展到这两个参数并不是问题…在执行宏函数展开之前,是否有任何方法强制它展开r1?
可以使用助手宏。另请参见双线问题
1 2 3 4 | #define CLEAR_DIGIT_HELPER(a,b) iconMap[a] &= ~(b) #define CLEAR_DIGIT(x) CLEAR_DIGIT_HELPER(x) #define R1 4, 16 CLEAR_DIGIT(R1); |