Autor
|
Tema: Duda - Proceso de compilación (Leído 3,271 veces)
|
criskapunk
Desconectado
Mensajes: 277
|
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
|
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
Mensajes: 277
|
@naderST: A que te referís con prototipos de funciones?
Gracias.
|
|
|
En línea
|
|
|
|
naderST
|
Por ejemplo supongamos que tenemos una función que se llama imprimir(). Su prototipo sería el siguiente void imprimir();
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: void imprimir() { printf("Esto es una prueba\n"); }
|
|
|
En línea
|
|
|
|
x64core
Desconectado
Mensajes: 1.908
|
@naderST: A que te referís con prototipos de funciones?
Gracias.
Leer un tutorial basico acerca de C/C++
|
|
|
En línea
|
|
|
|
criskapunk
Desconectado
Mensajes: 277
|
@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
|
@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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Duda sobre compilación VB
Programación Visual Basic
|
kabukiman
|
4
|
1,871
|
25 Junio 2007, 14:07 pm
por kabukiman
|
|
|
duda con compilacion del jcreator
Java
|
ailaht
|
1
|
6,194
|
28 Marzo 2009, 07:37 am
por Pablo Videla
|
|
|
Duda en compilación
Programación C/C++
|
GhostLT
|
3
|
3,154
|
2 Mayo 2010, 11:26 am
por Komodo
|
|
|
Duda de proceso de mi programa y proceso system
Programación General
|
crazykenny
|
0
|
2,795
|
12 Abril 2011, 20:02 pm
por crazykenny
|
|
|
[Duda] sobre un Proceso
Seguridad
|
Saumix
|
7
|
4,697
|
23 Junio 2013, 00:37 am
por burbu_1
|
|