2011-03-17 17 views
9

He definido un struct item en un archivo .h. Ahora estoy definiendo otro struct tPCB en otro .h que es parte del mismo proyecto, y necesito el tPCB para tener un item. Pensé que solo hacer parte del mismo proyecto de TurboC me permitiría usar el elemento en el otro archivo de encabezado, pero el compilador me arroja "undefined type: ite".Incluir un encabezado en otro archivo de encabezado

Supongo que de alguna manera tengo que incluir el primer encabezado en el segundo, sin embargo, he visto el mismo código similar que funciona sin hacerlo.

¿Hay alguna otra manera que simplemente agregar una línea #include para que funcione?

Respuesta

8

Si su .c #include s los dos archivos .h en el orden correcto, funcionará. Eso es probablemente lo que sucedió en el caso que recuerdas. El curso más seguro es #include cada archivo que define sus dependencias, y confíe en las guardias de inclusión en cada .h para evitar que las cosas se multipliquen.

+0

@nmichaels, gracias. Fácil de arreglar, el consejo sigue siendo el mismo. –

+0

Ok, entonces he movido el include al primer .h a la primera línea del .c principal, que entiendo es la primera línea que debe leer el compilador, y el problema persiste. – bluehallu

+0

@Hallucynogenyc, debe incluir ambos .h en su archivo .c principal. Primero es el que define 'item', luego el que define' tPCB'. Mejor, pon un '# include' en el .h que define' tPCB'. –

0

Debe usar #include. En C, todo es explícito; no esperes que funcione por arte de magia

+0

Aquí hay algo mágico: encabezados precompilados. – hoha

0

En su "otro .h", #include <a .h file>.

Elaboración:

En el archivo que define struct tPCB, tiene que #include del archivo que define struct item.

0

Lo sentimos, en C no hay forma de que pueda acceder a una definición de estructura, en otro archivo de encabezado sin incluir ese archivo (mediante un #include). Las instrucciones para el #include siguen.

Digamos que el archivo de encabezado que contiene la definición de la estructura del elemento se llama "item.h" y el archivo de encabezado que contiene la definición de la estructura de tPCB en "tPCB.h". En la parte superior de tPCB.h, usted debe poner la siguiente declaración:

#include "item.h" 

Esto debería dar el acceso a los archivos tPCB.h a todas las definiciones de la item.h.

1

Nunca coloque definiciones de variables (es decir, asignándolas) en un archivo de encabezado. Eso es malo por muchas razones diferentes, las dos principales son el diseño deficiente del programa y las inundaciones de errores del enlazador.

Si necesita exponer una variable globalmente (no hay muchos casos en los que realmente necesite hacer eso), entonces declare como extern en el archivo h y colóquelo en el archivo C correspondiente.

Cuestiones relacionadas