У меня возникла проблема с компилятором PIC32 версии 2.02.
Компилятор определяет тип BOOL следующим образом:
typedef enum _BOOL { FALSE = 0, TRUE } BOOL; // BOOL Type
Я хочу вернуть одно из перечисленных значений в такой функции:
BOOL
MyFunction(void)
{
if( PortAvailable() )
{
return TRUE;
}
else
{
return FALSE;
}
}
когда я компилирую свой код, я получаю эту ошибку, предшествующую "MyFunction":
error: expected '=', ',', ';', 'asm' or '__attribute__' before 'MyFunction'
Я обновляю свой компилятор с версии 1.05 до версии 2.02, где я создал свой собственный тип BOOL. Код работал нормально до попытки использовать версию 2.02. (Да, я удалил определение типа BOOL из кода).
Что-то, что я нахожу очень странным, это если я делаю функцию так:
enum BOOL
MyFunction(void)
{
if( PortAvailable() )
{
return TRUE;
}
else
{
return FALSE;
}
}
компилятор не дает мне ошибку выше. Правильно ли я использую перечисленный BOOL или кто-нибудь знает о шаге, который я пропустил?
MyFunction
в коде? - person jwodder   schedule 05.07.2016BOOL
— это макрос, который разрешается во что-то, что вызывает проблему? (gcc и MSVC используют параметр-E
для вывода предварительно обработанного вывода). - person Michael Burr   schedule 05.07.2016bool
со значениямиtrue
иfalse
- person Paul Stelian   schedule 05.07.2016bool
стандарта C99 (если ваш компилятор поддерживает ее), вам может потребоваться#include <stdbool.h>
. Кроме того, убедитесь, что в вашей кодовой базе нет#define BOOL _BOOL
. - person Michael Burr   schedule 05.07.2016_Bool
. Это часть языка. Стандартная библиотека предоставляетstdbool.h
, который определяетbool
,true
иfalse
как макросы, расширяющиеся до_Bool
,1
и0
соответственно. - person John Bollinger   schedule 05.07.2016typedef
определения перечисления. - person user3629249   schedule 06.07.2016