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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda - Proceso de compilación
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda - Proceso de compilación  (Leído 3,271 veces)
criskapunk

Desconectado Desconectado

Mensajes: 277



Ver Perfil
Duda - Proceso de compilación
« en: 9 Diciembre 2012, 22:48 pm »

Buenas. Tengo una consulta.

Según tengo entendido previo a la compilación de un programa en C, el compilador llama automáticamente al preprocesador el cual, siguiendo las órdenes definidas en las directivas del preprocesador, modifica el archivo con el código fuente (incluye el contenido de los archivos .h, etc).
Luego viene el momento de la compilación en el cual se traduce todo el programa a código objeto, pero dejando huecos libres. El enlazador es quien completa esos huecos, introduciendo las llamadas a las funciones de biblioteca que existan en el programa.

Mi duda es. Si el preprocesador ya se encargó de introducir el contenido de los archivos de cabecera, por que durante la compilación se dejan esos espacios libres? Es decir, no entiendo que función cumple el linker si las funciones que son llamadas en el programa ya están definidas dentro del mismo.

Un saludo y gracias.


En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Duda - Proceso de compilación
« Respuesta #1 en: 9 Diciembre 2012, 23:19 pm »

No necesariamente, por lo general en los archivos de cabecera (.h) se tiene son los prototipos de las funciones, pero la definición de las mismas se encuentran en otros archivos externos bien sea otro .c o un archivo de librería. El linker se debe encargar de enlazar todos estos archivos en un mismo archivo.


En línea

criskapunk

Desconectado Desconectado

Mensajes: 277



Ver Perfil
Re: Duda - Proceso de compilación
« Respuesta #2 en: 10 Diciembre 2012, 00:07 am »

@naderST:
A que te referís con prototipos de funciones?

Gracias.
En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Duda - Proceso de compilación
« Respuesta #3 en: 10 Diciembre 2012, 00:17 am »

Por ejemplo supongamos que tenemos una función que se llama imprimir(). Su prototipo sería el siguiente

Código
  1. void imprimir();
  2.  

Esto es lo que tendría nuestro archivo de cabecera (.h), ahora la definición de la misma pudiera estar en un .c el cual enlazaremos luego. La definición pudiera ser la siguiente:

Código
  1. void imprimir()
  2. {
  3.       printf("Esto es una prueba\n");
  4. }
  5.  
En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Duda - Proceso de compilación
« Respuesta #4 en: 10 Diciembre 2012, 01:33 am »

@naderST:
A que te referís con prototipos de funciones?

Gracias.

Leer un tutorial basico acerca de C/C++
En línea

criskapunk

Desconectado Desconectado

Mensajes: 277



Ver Perfil
Re: Duda - Proceso de compilación
« Respuesta #5 en: 11 Diciembre 2012, 03:08 am »

@naderST:
Entonces, cual es la función de tener un archivo de cabecera si la función está declarada en otro archivo?

@RHL:
Muchas gracias por la respuesta completamente inútil.

Un saludo.
En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Duda - Proceso de compilación
« Respuesta #6 en: 11 Diciembre 2012, 03:48 am »

 
@naderST:
Entonces, cual es la función de tener un archivo de cabecera si la función está declarada en otro archivo?

Básicamente indicarle al compilador el prototipo o interfaz de la función que se está llamando. Dependiendo del standard de C que estés usando puede ser obligatorio que declares el prototipo de la función.

En el siguiente link puedes ver un ejemplo de que puede pasar si no le indicas el prototipo de la función al comilador.

http://en.wikipedia.org/wiki/Function_prototype#Uses
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda sobre compilación VB
Programación Visual Basic
kabukiman 4 1,871 Último mensaje 25 Junio 2007, 14:07 pm
por kabukiman
duda con compilacion del jcreator
Java
ailaht 1 6,194 Último mensaje 28 Marzo 2009, 07:37 am
por Pablo Videla
Duda en compilación
Programación C/C++
GhostLT 3 3,154 Último mensaje 2 Mayo 2010, 11:26 am
por Komodo
Duda de proceso de mi programa y proceso system
Programación General
crazykenny 0 2,795 Último mensaje 12 Abril 2011, 20:02 pm
por crazykenny
[Duda] sobre un Proceso
Seguridad
Saumix 7 4,697 Último mensaje 23 Junio 2013, 00:37 am
por burbu_1
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines