=====#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]]