[C con Clase] directivas del preprocesador
Laureano G. Vaioli
laureano_river en yahoo.com.ar
Vie Mayo 1 19:05:15 CEST 2009
El pasado 2009-04-25 23:05:35, Rednaxela escribió:
R> Hola,
R> Tengo un archivo de cabecera que se llama "funciones.h", el cual contiene los prototipos de unas funciones que realice en un archivo "funciones.c" en éste archivo he agregado por ejemplo a "string.h", lo que quiero es que no vallar a resultar agregando dos veces a "string.h"; en el codigo fuente (principal) y tambien en "funciones.c".
R> Lo que voy es como provar que "string.h" ya esta agregado en el codigo fuente (principal) para que no lo agregue en "funciones.c", Gracias
R> _______________________________________________
R> Lista de correo Cconclase Cconclase en listas.conclase.net
R> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
R> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
Otra buena practica que podes poner en uso con respecto a este tema es usar GUIDS. Que es una GUID? Es un numero aleatorio que es casi imposible que se repita, es practicamente imposible que existan 2 GUIDS identicas. Ahora bien, te estaras preguntando para que sirve esto. Dejame que te explique.
Supone que vos usas una libreria que yo hice. Ahora bien, en esta libreria que hice, tambien tengo una clase string, y en su fichero de cabecera declare lo siguiente (que es igual a lo que vos escribiste):
#ifndef _STRING_H_
// mi codigo
#define _STRING_H_
#endif
Ahora pensa un poquito. Que pasaria si vos pones eso mismo? Hay 2 posibilidades:
1) Se incluye tu archivo de cabecera pero no el mio.
2) Se incluye mi archivo pero no el tuyo.
Entonces, para evitar este tipo de inconvenientes (que pueden ser muy propensos a ocurrir, mas cuando el nombre del fichero es muy comun, como en el caso de string; y sobre todo en grandes proyectos, en donde se utilizan ampliamente librerias escritas por terceros) lo que se hace simplemente es agregar la GUID:
#ifndef _STRING_H_66aa8b8c029d4763b7ef3dc0dba37cdf
#define _STRING_H_66aa8b8c029d4763b7ef3dc0dba37cdf
// tu codigo
#endif //_STRING_H_66aa8b8c029d4763b7ef3dc0dba37cdf
De esta manera, el programa compilaria sin problemas e incluiria ambos archivos de cabecera. Espero que te halla servido!! Saludos
Más información sobre la lista de distribución Cconclase