读书人

关于在if比较条件的有关问题

发布时间: 2012-03-23 12:06:21 作者: rapoo

关于在if比较条件的问题
这是我定义的[code=C/C++][/code]#define LEFT 0;
#define RIGHT 1;
#define UP 2;
#define DOWN 3;
然后这是我写的比较语句[code=C/C++][/code]switch(pMsg->wParam)
{
case 37:
case 65:
if (SnakeHead.iDirect == UP || SnakeHead.iDirect == DOWN)
{
SnakeHead.iDirect = LEFT;
}
break;//向左
case 39:
case 68:
if (SnakeHead.iDirect == UP || SnakeHead.iDirect == DOWN)
{
SnakeHead.iDirect = RIGHT;
}
break;//向右
case 38:
case 87:
if (SnakeHead.iDirect == LEFT || SnakeHead.iDirect == RIGHT)
{
SnakeHead.iDirect = UP;
}
break;//向上
case 40:
case 83:
if (SnakeHead.iDirect == LEFT || SnakeHead.iDirect == RIGHT)
{
SnakeHead.iDirect = DOWN;
}
break;//向下
default:
break;
}
编译通不过,理由是error C2143: syntax error : missing ')' before ';'
error C2143: syntax error : missing ';' before '||'
error C2059: syntax error : ')'

然后我直接把LEFT RIGHT等改成数字,结果就通过编译了[code=C/C++][/code]switch(pMsg->wParam)
{
case 37:
case 65:
if (SnakeHead.iDirect == 2 || SnakeHead.iDirect == 3)
{
SnakeHead.iDirect = LEFT;
}
break;//向左
case 39:
case 68:
if (SnakeHead.iDirect == 2 || SnakeHead.iDirect == 3)
{
SnakeHead.iDirect = RIGHT;
}
break;//向右
case 38:
case 87:
if (SnakeHead.iDirect == 0 || SnakeHead.iDirect == 1)
{
SnakeHead.iDirect = UP;
}
break;//向上
case 40:
case 83:
if (SnakeHead.iDirect == 0 || SnakeHead.iDirect == 1)
{
SnakeHead.iDirect = DOWN;
}
break;//向下
default:
break;
}
难道是条件里面不能出现定义的LEFT RIGHT等?

菜鸟求大神们指导啊

[解决办法]
define 后不用冒号

读书人网 >C++

热点推荐