RE:Cómo usar la directiva #ifndef?
La directiva #ifndef es una de las directivas de compilación opcional, este tipo de directivas te permiten definir segmentos opcionales de código a compilar dependiendo de ciertos parámetros que defines con estas mismas directivas. Si te interesan estas directivas busca más información en Google, aquí (tutoriales) o en algún otro lugar, busca como \"compilación condicional\", \"preprocesador\", etc.
#ifndef es muy usada para evitar que un archivo de cabecera sea incluído dos veces en un programa al momento de compilarlo, por ejemplo, suponiendo que tuvieramos el archivo cabecera.h:
----------
#ifndef cabecera_h
#define cabecera_h
// Aquí van las declaraciones y el código del archivo cabecera.h
#endif
----------
De esta forma, si cabecera_h no está definido antes de incluir este archivo, se define cabecera_h y se incluyen las declaraciones y código entre hasta antes de #endif, puesto que ahora cabecera_h ya está definida, esta cabecera no se volverá a incluir.
Saludos,
José Jorge (Geo).