错误:未在此范围内声明'TRUE'.pad.pvx * = -1; }

时间:2010-10-13 13:55:17

标签: c programming-languages

void move_paddle(PADDLE pad, bool alongX)
{
    if(alongX!=TRUE)
    {
        if((pad.py+pad.length/2)>=B || (pad.py-pad.length/2)<=BB)
            pad.pvx*= -1;
    }
    else if((pad.px+pad.length/2)>=A || (pad.py-pad.length/2)<=AA)
            pad.pvx*= -1;
}

实际错误是什么? M无法通过。

4 个答案:

答案 0 :(得分:2)

标准C语言中没有TRUE个关键字。最有可能的是,这是一个你遗漏的宏宣言。从何处获取取决于您使用的编译器和库。如果找不到它的定义,那么在使用TRUE之前(在文件的开头,但是在所有包含之后)放置此代码将解决问题:

#ifndef FALSE
#define FALSE (0)
#endif
#ifndef TRUE
#define TRUE (!FALSE)
#endif

答案 1 :(得分:2)

由于您使用的是bool数据类型,因此您似乎在C99中使用stdbool.h。如果是这种情况,那么您应该将TRUE更改为true,扩展为1

答案 2 :(得分:1)

我猜测如果编译器说你的错误是在这个范围内没有声明TRUE,那就是实际的错误。也许你应该定义TRUE。另外,正如我在评论中所指出的那样(在我看过标题之前),你最好甚至不在这个片段中使用TRUE。与C中的TRUE进行比较可能会导致难以调试的细微错误。 if (!alongX)表示您想说的内容,我发现它比if (alongX == FALSE)更清晰。

答案 3 :(得分:0)

你应该在c中使用类似int而不是bool的东西,只要它的值不是0就是真的,我会把它更改为

void move_paddle(PADDLE pad, int alongX)
{
    if(!alongX)
    {
        if((pad.py+pad.length/2)>=B || (pad.py-pad.length/2)<=BB)
            pad.pvx*= -1;
    }
    else if((pad.px+pad.length/2)>=A || (pad.py-pad.length/2)<=AA)
            pad.pvx*= -1;
}