TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: aitorsp en 02 de Febrero de 2011, 06:19:31

Título: Constante TRUE en mikroC
Publicado por: aitorsp 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
Título: Re: Constante TRUE en mikroC
Publicado por: fuente 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.
Título: Re: Constante TRUE en mikroC
Publicado por: MGLSOFT 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....
Título: Re: Constante TRUE en mikroC
Publicado por: aitorsp 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
Título: Re: Constante TRUE en mikroC
Publicado por: MGLSOFT 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??
Título: Re: Constante TRUE en mikroC
Publicado por: fuente 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.
Título: Re: Constante TRUE en mikroC
Publicado por: RICHI777 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 !
Título: Re: Constante TRUE en mikroC
Publicado por: aitorsp 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
Título: Re: Constante TRUE en mikroC
Publicado por: MGLSOFT en 02 de Febrero de 2011, 19:34:30
Y porque no un Boolean ??
Título: Re: Constante TRUE en mikroC
Publicado por: RICHI777 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:


Después existen modificadores como:


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 !
 

Título: Re: Constante TRUE en mikroC
Publicado por: gera 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!!
Título: Re: Constante TRUE en mikroC
Publicado por: RICHI777 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 !
Título: Re:Constante TRUE en mikroC
Publicado por: micronet3 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){


}