Descomposición de un fichero .c en varios ficheros

En la última clase de teoría que ayer impartí de la asignatura "Fundamentos de Programación I" correspondiente al Grado en Ingeniería de las Tecnologías de Telecomunicación, mostré como descomponer en varios ficheros un código fuente en C, evitando los típicos errores de "doble inclusión" que se producen si no se hace uso de las directivas oportunas del preprocesador.

Los errores que pretendemos solucionar son estos (o similares):

$ gcc -W -Wall -o descompuesto-mal principal.c rellena.c imprime.c

In file included from principal.c:4:
imprime.h:15: error: redefinición de `struct articulo'
imprime.h:18: error: redefinición de la definición de tipo 'ARTICULO'
rellena.h:18: error: la declaración previa de 'ARTICULO' estaba aquí
imprime.h:20: error: redefinición de la definición de tipo 'TABLA'
rellena.h:20: error: la declaración previa de 'TABLA' estaba aquí

Tras descomprimir el fichero adjunto a este post, encontrarás tres directorios:

  • codigo-completo: contiene todo el código en un único fichero.
  • descomposicion-bien: contiene el código anterior ya descompuesto en tres ficheros .c y dos ficheros .h. Como su nombre indica, esta descomposición es correcta y se hace uso de las directivas del preprocesador que evitan la doble inclusión de los typedef.
  • descomposicion-mal: es igual que el anterior pero en este caso se ha comentado la línea que hay en los .h que evita la doble inclusión.

Puedes comparar el código descompuesto con el código completo y observar cómo se ha llevado a cabo el proceso.

Obviamente, también puedes detectar el error de "redefinición" que muestran los mensajes del compilador y cómo se soluciona.

Si tienes alguna duda o comentario házmelos llegar por aquí.

Espero que te resulte útil.

AttachmentSize
File descomposicion-en-varios-ficheros.7z1.46 KB

Clasificado en artículos de:

comment reply