关于#define语句后面加括号与不加括号的区别,如:
#define MAX_NUM x //x为参数
#define MAX_NUM ( x ) //宏的参数可以用圆括号括起来,此时带参数的宏外形与函数非常相似
当x是常数的时候,其实是没什么区别的。
不过当定义是“类函数宏”的时候大多是有区别的,那有什么区别呢?
例如:
#include <stdio.h>
#define A(x) x+x
#define B(x) (x+x)
int main()
{
int x=5;
printf("%d\n",A(x)*A(x) );
printf("%d\n",B(x)*B(x) );
return 0;
}
运行下你就明白了。
因为类函数宏只是简单的替代而不是函数:
A(x)*A(x)=x+x*x+x=35;
B(x)*B(x)=(x+x)*(x+x)=100;
SO,区别很显然。
实例运行情况如下: