=====#define=====
Sintassi:
#define nome-macro stringa-di-sostituzione
Il comando #define è utilizzato per fare sostituzioni nel file dove è situato. In altre
parole #define indica al preprocessore di sostituire in tutto la definizione della macro
con quella della stringa di sostituzione. La stringa di sostituzione si ferma alla fine
della linea del #define
Ecco un uso tipico di #define (almeno in C):
#define TRUE 1
#define FALSE 0
...
int done = 0;
while( done != TRUE ) {
...
}
Un'altra caratteristica di #define è quella di accettare argomenti, cosa che lo
rende utile come creatore di pseudo-funzioni. Si consideri il seguente codice:
#define absolute_value( x ) ( ((x) < 0) ? -(x) : (x) )
...
int num = -1;
while( absolute_value( num ) ) {
...
}
Quando si definiscono macro con una certa complessità è generalmente una buona idea
aggiungere qualche parentesi in più.
Si noti che nell'esempio precedente la variabile "x" è sempre messa tra
parentesi. In questo modo il testo tra parentesi viene valutato prima di essere
confrontato con lo 0 o moltiplicato per -1. Inoltre l'intera macro è posta
tra parentesi per prevenire che venga contaminata da altro codice. Se non si è
attenti si corre il rischio che il preprocessore possa confondersi nell'interpretare il
codice. Ecco un esempio di come usare #define per creare un ciclo ''for''
che stampa una successione di numeri:
#define count_up( v, low, high ) \
for( (v) = (low); (v) <= (high); (v)++ )
...
int i;
count_up( i, 1, 20 ) {
printf( "i is %d\n", i );
}
Argomenti Correlati: [[sharp|# e ##]], [[preprocessor_if|#if,...,#endif]], [[undef|#undef]]