ошибка: "TRUE" не было объявлено в этой области pad.pvx * = -1; } - PullRequest
0 голосов
/ 13 октября 2010
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;
}

Какая фактическая ошибка?М не может дозвониться.

Ответы [ 4 ]

2 голосов
/ 13 октября 2010

Поскольку вы используете bool тип данных, похоже, что вы используете stdbool.h в C99.Если это так, то вы должны изменить TRUE на true, который расширяется до 1.

2 голосов
/ 13 октября 2010

В стандартном языке Си нет ключевого слова TRUE. Скорее всего, это объявление макроса, которое вы пропустили. Где его найти, зависит от того, какой компилятор и библиотеки вы используете. Если вы не можете найти его определение, то добавление этого кода перед использованием TRUE (в начале файла, но после всех включений) решит проблему:

#ifndef FALSE
#define FALSE (0)
#endif
#ifndef TRUE
#define TRUE (!FALSE)
#endif
1 голос
/ 13 октября 2010

Я предполагаю, что если компилятор говорит, что ваша ошибка в том, что TRUE не объявлено в этой области, то это фактическая ошибка. Может быть, вы должны определить ИСТИНА. Кроме того, как я указал в своем комментарии (до того, как я посмотрел на заголовок), вам, вероятно, лучше даже не использовать TRUE в этом фрагменте. Сравнение с TRUE в C может привести к незначительным ошибкам, которые трудно отладить. if (!alongX) означает то, что вы хотели сказать, и я нахожу это более ясным, чем if (alongX == FALSE).

0 голосов
/ 13 октября 2010

Вы должны использовать что-то вроде int вместо bool в c, и до тех пор, пока его значение не равно 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;
}
...