fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

unreachable code co...
 
Avisos
Vaciar todo

unreachable code con SDCC

7 Respuestas
3 Usuarios
0 Reactions
12.2 K Visitas
fmartagong
Respuestas: 36
Topic starter
(@fmartagong)
Ardero
Registrado: hace 16 años

Hola:

Estoy trabajando con SDCC y las librerías del Skybot.
La siguiente función me lanza un error. La funcion es:

/*****************************************/
/* Leer el estado de los bumpers
/*
/* Retorno de la función:
/* 0 - ningún bumper activo
/* o los dos apretados
/* 1 - bumper1 apretado
/* 2 - bumper2 apretado
/*
/*****************************************/
unsigned char LeerEstadoBumpers()
{
unsigned char bump1=0, bump2=0, sumabump;
if ((PORTA & 0x02) != 0) bump1=1; // Si bumper1 apretado devuelve 1
if ((PORTA & 0x04) != 0) bump2=2; // Si bumper2 apretado devuelve 2
if (sumabump = 3) return 0;
else return sumabump;
}

Y el error es:
ControlMotorPaP.c:126: warning 126: unreachable code
ControlMotorPaP.c:123: warning 110: conditional flow changed by optimizer: so said EVELYN the modified DOG
ControlMotorPaP.c:124: warning 110: conditional flow changed by optimizer: so said EVELYN the modified DOG

Responder
6 respuestas
gonzao
Respuestas: 218
(@gonzao)
Estimable Member
Registrado: hace 19 años

Lo que dices es correcto.
Viendo algun ejemplo del skybot, la lectura del puerto es correcta, así que lo que dije antes no es lo que está pasando.
Ahora he visto un fallo:
if (sumabump = 3) return 0;
En la condición del if estás haciendo una asignación en lugar de una comparación.
Asignas a sumabump el valor 3, que es distinto de 0 y por ello devuelve 0.
El unreachable code es: else return sumabump;
porque nunca hace el else.

Para arreglarlo debes poner:
if (sumabump == 3) return 0;
else ...

Cuando lo tengas, si te sigue avisando de algo, copia el código indicando de alguna manera el número de alguna línea para que nos centremos más en el error (o warning).

gONzAO

Responder
fmartagong
Respuestas: 36
Topic starter
(@fmartagong)
Ardero
Registrado: hace 16 años

Muchísimas gracias gONzAO:

Ya he resuelto el programa usando otro código, pero probaré lo que propones porque efectivamente debía haber usado "==" en lugar de "=".

Un saludo.

Si no fuera por esta comunidad...

Responder
Página 2 / 2
Compartir: