#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;
所以,区别很显然。
实例运行情况如下: