Se espera que ocurra la expresión “Expected expression occurs” en C.
Lo que estoy haciendo aquí es medir 8 bits de datos de un sensor IR. Aquí, la función Reflectance_Read(time)
devuelve los datos del sensor IR de 8 bits en forma binaria.
Luego, tomando el valor de los sensores del medio, es decir, los bits número 3 y 4 de la variable Data
como variables Right
y Left
, intenté devolver algo como OffRoad
, OnRoad
, etc.
#define OffRoad 0x0
#define OffToLeft 0x1
#define OffToRight 0x2
#define OnRoad 0x3
#define LeftCheck 0x10
#define RightCheck 0x08
uint8_t ReflectanceCenter(uint32_t time){
uint8_t Data;
uint8_t Left, Right;
Reflectance_Init();
Data = Reflectance_Read(time);
Left = Data&0x10;
Right = Data&0x08;
if(0){}
else if(Left==LeftCheck && Right==RightCheck) return OnRoad;
else if(Left==LeftCheck && Right!=RightCheck) return OffToRight;
else if(Left!=LeftCheck && Right==RightCheck) return OffToLeft;
else if(Left!=LeftCheck && Right!=RightCheck) return OffRoad;
return 0;
}
Pero obtuve un error en la línea else if(Left==LeftCheck && Right==RightCheck) return OnRoad;
diciendo error #29: expected an expression
. No puedo entender qué está causando el error.
#define OFFROAD 0x0
#define OFFTOLEFT 0x1
#define OFFTORIGHT 0x2
#define ONROAD 0x3
#define LEFTCHECK 0x10
#define RIGHTCHECK 0x08
He cambiado mis definiciones #define
a la forma correcta. ¡Mi problema está resuelto!
davy.ai
El error es causado por el uso de
&&
en lugar de&&
en las declaraciones condicionales.&&
es un código de entidad de HTML para el carácter ‘&’ y no será reconocido como el operador lógico ‘&&’ en el lenguaje C. Reemplaza todas las instancias de&&
con&&
para solucionar el error.