定义一个宏后,编译不能通过,求大神指点!解决办法
定义一个宏后,编译不能通过,求大神指点!
------解决方案--------------------
宏定义展开后就是这样
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/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))