Programación General => C/C++ => Mensaje iniciado por: Rombus en Jueves 9 de Octubre de 2008, 20:40
Título: Compilacion Condicional y Creacion de Librerias
Publicado por: Rombus en Jueves 9 de Octubre de 2008, 20:40
Hola gente!
estoy intentando hacer algo semejante a una libreria.
y averiguando me entere que con esto:
Código: C
#ifndef _stdio_h
#include <stdio.h>
#endif
#ifndef _stdlib_h
#include <stdlib.h>
#endif
#ifndef _string_h
#include <string.h>
#endif
#ifndef _assert_h
#include <assert.h>
#endif
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE !FALSE
#endif
evito problemas del tipo "redefinicion de tal cosa", tanto en inclusiones de librerias como de macros.
Existe alguna forma de hacer lo mismo pero contemplando los typedefs?
Código: Text
si el typedef de boolean no esta
typedef char boolean;
fin si
gracias por su tiempo!
Título: Re: Compilacion Condicional y Creacion de Librerias
Publicado por: diego.martinez en Viernes 10 de Octubre de 2008, 09:52
si se puede con la directiva #ifndef o #ifdef
Código: Text
#ifndef _mytypo
#defien _mytypo
typedef mytypo ...
#endif
Título: Re: Compilacion Condicional y Creacion de Librerias
Publicado por: Malik en Viernes 10 de Octubre de 2008, 11:55
Citar
evito problemas del tipo "redefinicion de tal cosa", tanto en inclusiones de librerias como de macros.
Puedes explicarme eso de "problemas del tipo redefinición de tal cosa"?
Gracias de antemano
Título: Re: Compilacion Condicional y Creacion de Librerias
Publicado por: Rombus en Viernes 10 de Octubre de 2008, 15:54
Gracias diego.martinez!, la directiva #ifndef al parecer es muy amplia XD
Malik, me explico mejor ;) :
supongamos que quieres crear una libreria que sume numeros, es muy probable que debas incluir la libreria math.h (muy probalbe no, seguro la incluyes), entonces desde tu programa incluyes la stdio.h y la math.h pq tambien quieres realizar algunas operaciones matematicas.
si despues de haber hecho #include <math.h> haces el include de tu libreria, que tambien llama a la math.h sin haberlo premeditado obtendras un error de redefinicion, osea, el compilador te dira que tienes dos funciones con el mismo nombre, algo que es incorrecto.
en cambio si en tu libreria contemplas ese caso preguntando si ya esta incluida la math.h no la incluis, sino si la incluyes. evitando ese problema.