La direttiva #ifndef, compila il codice solo se è non è stato definita la macro, in pratica se hai:
codice:
#ifndef MACRO
int a = 5;
#endif
a verra "creato" dal compilatore solo se MACRO non è stata definita.
Si usa nei file di intestazione, per far in modo che il suddetto file venga compilato una sola volta.
codice:
#ifndef __HEADER__
#define __HEADER__
/*Codice*/
#endif
Se questo header viene incluso più volte, esso viene compilato solo una volta, perchè dopo __HEADER__ sarà definito e quindi il compilatore salterà tutto il codice fino ad #endif.
Il nome della macro può essere anche pippo, per quel che ne so'.