Diferencia entre revisiones de «Archivo de cabecera»
Contenido eliminado Contenido añadido
→Motivación: corregí la palabra "declaraciones" que estaba escrita como "declaracones" |
|||
Línea 61:
</source>
Si el programador olvida actualizar la declaración en <code>main.c</code>, se pueden dar resultados devastadores. La función <code>print_heading()</code> espera un argumento y hace uso del valor del mismo, sin
¿Por qué se puede compilar y enlazar este código sin problema alguno? El motivo es que el compilador se guía por la declaración en <code>main.c</code> a la hora de compilar la unidad por traducir <code>main.c</code>. Y esa declaración se ajusta con la forma de la función. Más tarde, cuando el enlazador combina las translation unitos ya compiladas <code>main.c</code> y <code>print-heading.c</code> (en la mayoría de implementaciones representadas como archivos <code>main.o</code> o <code>main.obj</code>), probablmente podría detectar la inconsistencia — pero no en C. Las implementaciones en C referencian las funciones por el nombre al nivel de archivo objeto y archivo binario, esto no incluye el valor de retorno o la lista de argumentos. El enlazador encuentra una referencia a <code>print_heading()</code> en <code>main.o</code> y una función adecuada en <code>print-heading.o</code>. Llegado este punto, toda la información relativa a tipos de argumentos de funciones se pierde.
|