¿Cuál es el sentido de los archivos de encabezado en C?

Posibles duplicados:
[C] Encabezado por archivo fuente.
En C ++, ¿por qué tienen archivos de cabecera y archivos cpp?
C ++ – ¿Qué debería ir en un archivo .h?

¿La única razón por la que existen archivos de cabecera en C es para que un desarrollador pueda ver rápidamente qué funciones están disponibles y qué argumentos pueden tomar? ¿O tiene algo que ver con el comstackdor?

¿Por qué ningún otro idioma ha usado este método? ¿Soy solo yo, o parece que tener 2 conjuntos de definiciones de función solo conducirá a más mantenimiento y más espacio para errores? ¿O conocer los archivos de encabezado es algo que todos los desarrolladores de C deben saber?

Los archivos de encabezado son necesarios para declarar funciones y variables que están disponibles. Es posible que no tenga acceso a las definiciones (= los archivos .c) en absoluto ; C admite la distribución de código solo binario en bibliotecas.

El comstackdor necesita la información en los archivos de encabezado para saber qué funciones, estructuras, etc. están disponibles y cómo usarlas.

Todos los idiomas necesitan este tipo de información, aunque recuperan la información de diferentes maneras. Por ejemplo, un comstackdor de Java hace esto escaneando el archivo de clase o el código fuente de Java para recuperar la información.

El inconveniente de Java-way es que el comstackdor posiblemente necesite contener mucha más información en su memoria para poder hacer esto. Esto no es gran cosa hoy, pero en los años setenta, cuando se creó el lenguaje C, simplemente no era posible mantener tanta información en la memoria.

La razón principal por la que existen los encabezados es para compartir declaraciones entre múltiples archivos fuente.

Supongamos que tiene la función float *f(int a, int b) definida en el archivo ac y reutilizada en bc y dc . Para permitir que el comstackdor compruebe correctamente los argumentos y los valores devueltos, coloque el prototipo de función en un archivo de cabecera e .c en los .c fuente .c o repita el prototipo en cada archivo fuente.

Lo mismo vale para typedef etc.

Si bien, en teoría, podría repetir la misma statement en cada archivo fuente, se convertiría en una verdadera pesadilla para gestionarlo adecuadamente.

Algunos idiomas usan el mismo enfoque. Recuerdo que las unidades TurboPascal no eran muy diferentes. Pondrás use ... al principio para indicar que necesitarías funciones definidas en otro lugar. No puedo recordar si eso también pasó a Delphi.

  1. Sepa qué hay en una biblioteca a su disposición.
  2. Divida el progtwig en fragmentos de tamaño de mordisco para el comstackdor. Comstackr un megabyte de archivos C simultáneamente requerirá más recursos de los que puede ofrecer la mayoría del hardware moderno.
  3. Reduce la carga del comstackdor ¿Por qué debería saberlo en los procedimientos de visualización de pantalla sobre el motor de base de datos profunda? Permita que aprenda solo de las funciones que necesita ahora.
  4. Separar datos privados y públicos. Este uso no es frecuente, pero puede implementar en C para lo que C ++ utiliza campos privados: cada archivo .c incluye dos archivos .h, uno con declaraciones de cosas privadas y el otro con cualquier otra cosa que requiera del archivo. Menos posibilidades de un conflicto de espacio de nombres, más seguro debido a la hermetización.
  5. Configuraciones alternativas Makefile decide qué encabezado usar, y el mismo código puede servir a dos plataformas diferentes con dos archivos de encabezado diferentes.

Probablemente más.