direi che non c'è bisogno di ripondere no?
mi sembra che Level abbia detto tutto giusto...
pero', devo fare una piccola precisazione su cio' che ha detto r0x.
LE DIRETTIVE apl preprocessore, agiscono solo su se stesse, non sul codice C.
Cioe', se fai
#define PIPPO 5
#if PIPPO == 5
printf(...);
#else
printf(...);
#endif
e' corretto, non posso interagice con varibili di c, come in questo caso:
int pippo = 5;
#if pippo == 5
...
#else
...
#endif
inoltre, ti consiglio di usare
#ifdef MACRO
piuttosto che
#if defined(MACRO)
perche' questo ultimo metodo sta andando in disuso, cmq non cambia nulla
/* sapevi che le costanti definite con #define si chiamano MACRO, poi t dico il perche'*/
quersto caso e' sbagliato
Allora, ti spiego le MACRO
Spesso, vengono usate SOLO ed esclusivamente come costanti.
effettivamente, la direttiva DEFINE, non definisce una costante, ma indica al preprocessore che QUALSIASI occorenza della macro che tu hai definito, venga sostituita con un certo testo:
#define PIPPO "Pippo e' andato a mercato con Topolino"
Ogni qualvolta il Preprocessore trova PIPPO, lo sostituisce con quella striga specificata DOPO IL PRIMO SPAZIO
la sintassi e' cosi
#define PRIMA_DELLO_SPAZIO DOPO_LO_SPAZIO
ora, ce' un metodo per costruire delle specie di FUNZIONI, funziona cosi'
#define NOME_MACRO(p1,p2) funzione_che_usa_i_parametri(p1,p2)
ad esempio si mettono spesso nelle macro delle mini-funzioni come:
#define DISEGNA_LINEA(x1,y1,x2,y2) FunzioneCheDisegnaUnaLinea(x1,y1,x2,y2)
E si richiama nel codice così:
DISEGNA_LINEA(1,2,3,4)
semplice e comodo
Ciao