<stdio.h> en parte1.c y parte2.c, o no hace falta?

Username
19 de Agosto del 2005
Hola.

Estoy haciendo un programa que consta de 3 partes que se compilan a la vez y se obtiene un solo ejecutable.

En la parte primera, ya incluyo <stdio.h>, pero no lo hago en las dos restantes partes.

Para usar funciones de dicha biblioteca, (printf(), scanf(), etc.) en parte2.c y parte3.c, ¿necesito incluirla?

Gracias.

hiei
19 de Agosto del 2005
Si, deves incluirl los archivos de caveceras en los archivos C que usan esas funcionesel mismo proyecto.
Veras, la compilacion por partes funciona asi:
primero, se compila cada codigo fuente a un archivo objeto (extencuion .o) que contiene el codigo de maquina pero no e ejecutable, sino que las referencias a las fuciones que no pudo resolver el compilador (y que se an dejado para otra fase) estan indefinidas.
Luego, todos esos fichero .O se "enlasan"(por el enlasador LD interno de GCC) en un solo ejecutable resolviendo las dependencias que estan marcadas como indefinidas.
La compilacion de cada archivo .C es independiente de los otros (por eso deves incluir en cada archivo .C las cabeceras con las declaraciones de las funciones que vas a usar en cada archivo)

Como nota aparte, pero que me parece intertesante comentar en ara de la estricta verdad, es que el ejecutable final puede tener aun referencias a funciones sin resolver, estas seran resueltas por el itema operativo cuando se ejecute el programa vinculandolas a librerias estandares... pero este ya es otro tema... solo como dato para que ningun purista de C se queje... ;-)