昨天写了一个用宏实现的返回绝对值的函数:
define abs(n) ( (n) >= 0 ? (n) : (-n))
使用的时候发现结果不对,也没看出来错在哪了。。
#define abs(n) ( (n) >= 0 ? (n) : (-n))
int main(void)
{
int a = abs(1-2) + abs(3-8);
return 0;
}
用 预编译命令处理一下 ( linux 下 cpp 或者 gcc -E ), 输出如下:
int main(void)
{
int a = ( (1-2) >= 0 ? (1-2) : (-1-2)) + ( (3-8) >= 0 ? (3-8) : (-3-8));
return 0;
}
ho
现在能看出来代码错在哪了。。