Autor Tema: Constante TRUE en mikroC  (Leído 6876 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado aitorsp

  • PIC18
  • ****
  • Mensajes: 296
Constante TRUE en mikroC
« en: 02 de Febrero de 2011, 06:19:31 »
Hola:

No se si os ha pasado pero ayer probando un poco el MikroC un compañero puso lo siguiente:

while(true){
-
-
-
-
}

al hacer build al programa le genero un fallo porque no reconocia la constante true pero al hacer lo mismo con:

while(1){
-
-
-
-
}

resulta que si compila.

Os pasado a vosotros?

Un saludo

Aitor

Desconectado fuente

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 573
Re: Constante TRUE en mikroC
« Respuesta #1 en: 02 de Febrero de 2011, 08:04:05 »
No conozco como funciona el mikroC, pero si no tienes definida la constante, es lógico que el compilador se queje.

Además ojo a las mayúsculas y minúsculas, que en C hay que tenerlas en cuenta.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Constante TRUE en mikroC
« Respuesta #2 en: 02 de Febrero de 2011, 08:16:25 »
MikroC es Case sensitive, es decir que esa constante seguramente debe ser escrita en mayúsculas....
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado aitorsp

  • PIC18
  • ****
  • Mensajes: 296
Re: Constante TRUE en mikroC
« Respuesta #3 en: 02 de Febrero de 2011, 15:59:22 »
No conozco como funciona el mikroC, pero si no tienes definida la constante, es lógico que el compilador se queje.

Además ojo a las mayúsculas y minúsculas, que en C hay que tenerlas en cuenta.

Hola:

vale, entonces por qué al escribir la palabra true se pone inmediatamente en negrita?. Si no me equivoco eso significa que la ha reconocido no?

Un saludo

Aitor

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Constante TRUE en mikroC
« Respuesta #4 en: 02 de Febrero de 2011, 16:47:41 »
No tengo mucha experiencia en MikroC, salvo alguna incursión esporádica hace unos años atras, pero es posible que NO LA Reconozca y eso sea la razón de la negrita, no es posible??
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado fuente

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 573
Re: Constante TRUE en mikroC
« Respuesta #5 en: 02 de Febrero de 2011, 18:40:22 »
O puede que la tenga en el diccionario del editor, y por eso la pone en negrita, pero la constante no esté definida.
Prueba a ponerla en mayúsculas, y si no, definirla con un define.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Constante TRUE en mikroC
« Respuesta #6 en: 02 de Febrero de 2011, 18:54:27 »
Si MikroC es ANSI C entonces es correcto, el tipo bool o boolean con sus valores ( true o false ) no son parte del estandart con lo cual error al compilar. Para estos casos se usan los typedefs

Código: [Seleccionar]
typedef unsigned char bool;

#define false 0
#define true !false

Lo metes en un h genérico y lo incluis en todos tus módulos

Saludos !

Desconectado aitorsp

  • PIC18
  • ****
  • Mensajes: 296
Re: Constante TRUE en mikroC
« Respuesta #7 en: 02 de Febrero de 2011, 19:08:57 »
Si MikroC es ANSI C entonces es correcto, el tipo bool o boolean con sus valores ( true o false ) no son parte del estandart con lo cual error al compilar. Para estos casos se usan los typedefs

Código: [Seleccionar]
typedef unsigned char bool;

#define false 0
#define true !false

Lo metes en un h genérico y lo incluis en todos tus módulos

Saludos !

Solo una cosa, por que defines el tipo bool como unsigned char?. No podria ser int8?

Un saludo

Aitor

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Constante TRUE en mikroC
« Respuesta #8 en: 02 de Febrero de 2011, 19:34:30 »
Y porque no un Boolean ??
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Constante TRUE en mikroC
« Respuesta #9 en: 02 de Febrero de 2011, 21:09:37 »
Hola, aclaremos algo, en ANSI C ( C99 es otra cosa, pero para embebidos no todos los soportan ) los únicos tipos válidos reconocidos son estos:

  • char
  • int
  • long

Después existen modificadores como:

  • unsigned
  • short

Normalmente en muchos compiladores utilizan typedefs para definir tipos mas convencionales, como dword, word, int8, int16, bool, etc, etc

Como en el caso del boolean que solo debería almacenar valores 0,1 o true o false se utiliza el tipo de dato de menor tamaño que es unsigned char, el int8 es un typedef del mismo dato y todos ocupan 1 byte.

Saludos !
 


Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Constante TRUE en mikroC
« Respuesta #10 en: 02 de Febrero de 2011, 21:23:30 »
TRUE es una constante q esta definida en una libreria, y no recuerdo cual jeje.
El compilador la pone en negrita porq el IDE la reconoce, pero a la hora de compilar no la encuentra definida en ninguna parte.
Podes definirla vos al principio de tu programa con #define TRUE 1
saludos!!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Constante TRUE en mikroC
« Respuesta #11 en: 02 de Febrero de 2011, 22:41:58 »
Hola,

Citar
TRUE es una constante q esta definida en una libreria, y no recuerdo cual jeje

Las librerias son utilizadas en tiempo de linkeo, el true debe estar en un header ( *.h ) para que el compilador pueda resolverla. Con respecto a la definición la forma correcta es la que coloque anteriormente, ya que true es todo valor diferente a cero.

Saludos !

Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 288
Re:Constante TRUE en mikroC
« Respuesta #12 en: 20 de Junio de 2018, 10:32:51 »
se tiene que incluir la libreria #include <stdbool.h>
 y en en bucle infinito se pone true en minuscula

while(true){


}


 

anything