elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Pregunta sobre archivo de cabecera
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Pregunta sobre archivo de cabecera  (Leído 2,179 veces)
Zodiak98

Desconectado Desconectado

Mensajes: 120


Ver Perfil
Pregunta sobre archivo de cabecera
« en: 10 Mayo 2013, 01:03 am »

Hola bueno, es qué tengo una duda sobre este tema, mi profesor no explica muy bien que digamos. >__< Y acá me ayudan todo el tiempo xD

Ok bueno, mi duda es la siguiente:

Un archivo de cabecera contiene las declaraciones de un archivo de código fuente. Entonces el archivo de código fuente es el que le da el cuerpo a esas declaraciones. Pero entonces al ir al main se añade la cabecera y no el código fuente que le da cuerpo a las funciones de esa cabecera.

Alguien que me explique claramente esto. :)

Porqué yo por mi parte pienso que seria bueno añadir el código fuente que le da el cuerpo a esas declaraciones de la cabecera, ya qué bueno es la que tiene el cuerpo de las declaraciones. >__< Pero claro estoy para aprender.

Y sí también se que se puede añadir el archivo de código fuente pero ese no es el caso. :)


« Última modificación: 10 Mayo 2013, 01:06 am por Zodiak98 » En línea

pacoperico

Desconectado Desconectado

Mensajes: 100


Ver Perfil
Re: Pregunta sobre archivo de cabecera
« Respuesta #1 en: 10 Mayo 2013, 02:36 am »

Cuando en un programa incluimos un archivo de cabecera mediante la directiva  #include y luego lo compilamos, el preprocesador de C lo que hace realmente es copiar las lineas de codigo del archivo de cabecera e insertarlo en nuestro codigo fuente. Cuando en el "main" añades la cabecera, lo que estas haciendo es copiar literalmente el contenido de esa cabecera en tu "main". Y por lo tanto, podras usar las funciones que hubiesen en el archivo de cabecera sin necesidad de prototiparlas y definirlas porque ya estan prototipadas y definidas. Con "main" me refiero al archivo de codigo fuente donde se encuentra la funcion main().

Dicho de otro modo mas sencillo. Si por ejemplo, en un archivo de cabecera escribes una funcion y luego añades ese archivo de cabecera a tu programa es como si la hubieras escrito directamente en tu programa.

Creo que es posible que a lo que se puede estar refiriendo tu profesor es a separar la interfaz de la implementacion es decir, separar los prototipos de funciones de sus definiciones. Un ejemplo de lo que te quiero decir, imagina que tenemos lo siguiente:

- Un archivo de cabecera el cual, solo contiene los prototipos de las funciones. Este archivo seria la interfaz.
- Un archivo de codigo fuente que solo contiene las definiciones de las funciones. Este seria la implementacion.
- Y otro archivo de codigo fuente en el que se encuentra nuestra funcion main().

Este ultimo archivo de codigo fuente seria nuestro programa, y en el que con solo añadir el archivo de cabecera ya podremos usar perfectamente todas las funciones que haya dentro del aychivo de cabecera.


En línea

Zodiak98

Desconectado Desconectado

Mensajes: 120


Ver Perfil
Re: Pregunta sobre archivo de cabecera
« Respuesta #2 en: 10 Mayo 2013, 03:46 am »


- Un archivo de cabecera el cual, solo contiene los prototipos de las funciones. Este archivo seria la interfaz.
- Un archivo de codigo fuente que solo contiene las definiciones de las funciones. Este seria la implementacion.
- Y otro archivo de codigo fuente en el que se encuentra nuestra funcion main().



Exacto a esa última parte me refiero, pero entonces si incluimos la cabecera, y la cabecera tiene de forma separada la definicion en otro archivo de código fuente (Qué no es el main), el le da el cuerpo a esas funciones de la cabecera y luego con añadir la cabecera basta? Porqué ya el otro archivo de código fuente le dio el cuerpo no?. Espero haberme explicado.
En línea

0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: Pregunta sobre archivo de cabecera
« Respuesta #3 en: 10 Mayo 2013, 15:55 pm »

El caso es que al final tienes que incluir la implementación, no sólo los prototipos, para esto tienes varias opciones:

 - Crear una librería estática o dinámica, y linkear con ella.
 - Compilar tanto la implementación como el código del main a código objeto, y enlazarlos para crear un ejecutable.
 - Compilar la implementación y el main juntos directamente.

La primera opción es la ideal, pero depende más del compilador y la plataforma.

Saludos.
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
pacoperico

Desconectado Desconectado

Mensajes: 100


Ver Perfil
Re: Pregunta sobre archivo de cabecera
« Respuesta #4 en: 10 Mayo 2013, 18:30 pm »

Exacto a esa última parte me refiero, pero entonces si incluimos la cabecera, y la cabecera tiene de forma separada la definicion en otro archivo de código fuente (Qué no es el main), el le da el cuerpo a esas funciones de la cabecera y luego con añadir la cabecera basta? Porqué ya el otro archivo de código fuente le dio el cuerpo no?. Espero haberme explicado.

Si la definicion se encuentra en un archivo distinto de codigo fuente, en el propio archivo de cabecera podriamos incluir ese archivo de codigo fuente. Incluso tambien se podria incluir ese archivo de codigo fuente, desde nuestro archivo donde se aloja la funcion main(). Asi solo tendriamos que compilar al archivo donde se encuentra el main para poder tener nuestro programa listo.

Me he expresado mal cuando en mi anterior post te dije de incluir solo la cabecera, a lo que me queria referir es a incluir tanto la cabecera como su definicion. Y para ello hay varias formas de hacerlo como bien te ha señalado 0xDani. Yo la opcion que mas me gusta es compilar por una parte el archivo de definicion a codigo objeto, luego desde el archivo donde tenemos el main incluimos el archivo de cabecera en el cual solo estan los prototipos para luego finalmente compilar el archivo del main enlazando con el codigo objeto del archivo de definicion.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pregunta sobre script (descarga de archivo en ftp)
Scripting
teje 0 2,624 Último mensaje 23 Noviembre 2009, 17:22 pm
por teje
Crear archivo de cabecera .h con funcion que retorna string
Programación C/C++
Darioo 2 2,120 Último mensaje 26 Enero 2014, 00:28 am
por Darioo
pregunta sobre archivo de texto
Programación C/C++
mataliebres 5 2,355 Último mensaje 8 Marzo 2015, 16:20 pm
por mataliebres
Pregunta sobre archivo bat con permisos
Windows
Baphomet2204 3 2,045 Último mensaje 13 Febrero 2019, 18:29 pm
por Baphomet2204
[Resuelto] [Pregunta]: ¿Qué es X-Mailer en una cabecera de un mail de PHP?
PHP
Leguim 3 2,508 Último mensaje 3 Octubre 2019, 12:48 pm
por @XSStringManolo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines