EffectiveC++ 条款2的疑问
代码如下:
- C/C++ code
#define CALL_WITH_MAX(a, b) ((a) > (b) ? (a) : (b))int main(){ int a = 5, b = 0; CALL_WITH_MAX(++a, b);//这里为什么a会被累加两次? std::cout << "a: " << a << ", b: " << b << std::endl; CALL_WITH_MAX(++a, b+10); std::cout << "a: " << a << ", b: " << b << std::endl;}求解。
[解决办法]
宏就是替换
CALL_WITH_MAX(++a, b);展开后
((++a) > (b) ? (++a) : (b));