定义一个宏后,编译不能通过,求大神指点!解决办法

定义一个宏后,编译不能通过,求大神指点!
C/C++ code
#include<iostream.h>
#define Max3(value1,value2,value3)\
{\
int max;\
if(value1>value2) max=value1;\
else max=value2;\
if(max<value3) max=value3;\
cout<<max<<endl;\
}

int main()
{
     int max;
     max=Max3(6,5,2);
     cout<<max<<endl;

     return(0);
}

编译总是不能通过,小弟才疏学浅,不知道问题在哪,诚心求指导!

------解决方案--------------------
宏定义展开后就是这样

int main()
{
int max;
max={int max;if(6>5) max=6;else max=5;if(max<2) max=2;cout<<max<<endl;};
cout<<max<<endl;

return(0);
}
自己检查一下吧
------解决方案--------------------
宏不是函数,宏展开成了
max={
...
}
当然编译不过了,像这个宏其实是直接调用的。

#include<iostream.h>
#define Max3(value1,value2,value3)\
{\
int max;\
if(value1>value2) max=value1;\
else max=value2;\
if(max<value3) max=value3;\
cout<<max<<endl;\
}

int main()
{
Max3(6,5,2);
return(0);
}

如果要等于,要用?:
比如改成如下:
#define MAX(x,y) (x)>(y)?(x):(y)
#define Max3(x,y,z) MAX(x, MAX(y,z))