Mejor explicarlo con un ejemplo:
Imagina que tienes un programa con un fichero principal "main.c"
main.c
Código:
#include <stdio.h>
#include "llamar_adios.h"
int main(void)
{
printf("hola\n");
llamar_adios();
return 0;
}
Ahora creamos un fichero aparte donde creamos la función "llamar_adios()"
llamar_adios.c
Código:
#include <stdio.h>
#include "llamar_adios.h"
void llamar_adios(void)
{
printf("Adios nenitas\n");
}
Ahora para que main pueda usar ésta función tenemos que crear un fichero header donde declararla. Pero cuando compilemos el proyecto, el fichero "llamar_adios.h" se compilará dos veces porque esta incluido en dos ficheros c. Lo ideal es que se lea una vez y lo ingnore la segunda. Para eso se usa el sistema del preprocesador:
llamar_adios.h
Código:
#ifndef _LLAMAR_ADIOS_H_ //si no está declarada esta constante...
#define _LLAMAR_ADIOS_H_ //pues la definimos
void llamar_adios(void); //y declaramos la función
#endif //fin. La proxima vez que lea este fichero, todo esto lo ingnorará porque la constante _LLAMAR_ADIOS_H_ está declarada.
¿Te has enterado? fácil no?