1.28、规则:使用宏时,不允许参数发生变化。
2016-07-19 本文已影响93人
半升多瑙河
示例:如下用法可能导致错误。
#define SQUARE( a ) ((a) * (a))int a = 5;int b;b = SQUARE( a++ ); //结果:a = 7,即执行了两次增1。 正确的用法是:
b = SQUARE( a );a++; //结果:a = 6,即只执行了一次增1。其他
示例:如下用法可能导致错误。
#define SQUARE( a ) ((a) * (a))int a = 5;int b;b = SQUARE( a++ ); //结果:a = 7,即执行了两次增1。 正确的用法是:
b = SQUARE( a );a++; //结果:a = 6,即只执行了一次增1。其他