#define EIF_FLAG_BASE '0'
#define EIF_FLAG_SCRAP 0x0001
#define EIF_SET_SCRAP(x) (x) = (EIF_FLAG_BASE + (((x) - EIF_FLAG_BASE) | EIF_FLAG_SCRAP));
此时如果我传入 #define EIF_SET_SCRAP(!) 或者 x 传入 Null,结果是什么?
我不会算这个,特别是 ((x) - EIF_FLAG_BASE) 这一步,是先算哪一个,再算哪一步呢?
也不知道我问题是不是说清楚了,谢谢了~~~
------解决方案--------------------------------------------------------
首先呢,楼主这个是汇编版块是吧,,呵呵
正题:((x) - EIF_FLAG_BASE)这个先算(x)的在算外面一个括号的
------解决方案--------------------------------------------------------
#define EIF_SET_SCRAP(x) (x) = (EIF_FLAG_BASE + (((x) - EIF_FLAG_BASE) | EIF_FLAG_SCRAP));
如果传入!,'!'={'0'+(('!'-'0')|1)));
如果是NULL的話,把‘!’改為NULL
这个运算完还是等于本身传进的参数值