读书人

定义一个宏后编译不能通过求大神指

发布时间: 2012-03-21 13:33:15 作者: rapoo

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

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))

读书人网 >C++

热点推荐