宏函数的错误。

昨天写了一个用宏实现的返回绝对值的函数:

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

现在能看出来代码错在哪了。。

猜你喜欢

转载自blog.csdn.net/CaspianSea/article/details/131507636