关于宏的副作用简单的叙述
- //Effective C++ 3rd
- # include <stdio.h>
- # define CALL_WITH_MAX(a,b) ((a) > (b) ? (a) : (b))
- int main(void)
- {
- int a = 5;
- int b = 0;
- int Max = 0;
- Max = CALL_WITH_MAX(++a,b); //6 > 0 ? 6 : 0 6+1 = 7 //a加2次
- printf("Max = %d\n",Max);
- Max = CALL_WITH_MAX(++a,b+20);//6 > 10 ? 6 : 20 20 //a加1次
- printf("Max = %d\n",Max);
- //a的大小取决于与对比数的大小
- return 0;
- }
运行结果: