宏和函数写法以及调用方式,有很大的相似,但是他们却存在本质上的区别,函数调用时将实参表达式值求出来,然后赋值给形参,计算结果,而宏则是对实参表达式不做计算,直接替换。
eg:
int fun(int y){
return y*y;
}
#define FUN(y) y*y;
int y=3;
int a=fun(++y); //16
y=3;
int b=FUN(++y) //25
宏和函数写法以及调用方式,有很大的相似,但是他们却存在本质上的区别,函数调用时将实参表达式值求出来,然后赋值给形参,计算结果,而宏则是对实参表达式不做计算,直接替换。
eg:
int fun(int y){
return y*y;
}
#define FUN(y) y*y;
int y=3;
int a=fun(++y); //16
y=3;
int b=FUN(++y) //25