Le Direttive di definizione
Le direttive di definizione in C sono sostanzialmente due, #define e #undef, che, come vedremo sotto, possono essere usate congiuntamente per definire o meno qualcosa in modo condizionale.
Ma passiamo a spiegare l’utilizzo di #define; questa direttiva, quando serve per definire una costante ha la seguente sintassi,
#define identificatore espressione
in cui sostanzialmente il pre-processore sostituisce tutte le occorrenze di “identificatore” con l’espressione corrispondente (che può contenere anche spazi o virgolette); generalmente il nome di una costante definita con tale direttiva, oltre ad essere tutto maiuscolo, viene preceduto dal carattere underscore ( _ ). Quando la direttiva serve per definire una macro ha una sintassi leggermente diversa,
#define identificatore(argomenti) espressione
in questo caso, invece, si suppone che l’espressione contenga gli argomenti come variabili sulle quali operare, il pre-processore non fa altro che sostituire il codice di espressione, modificando gli argomenti definiti nella macro con quelli attuali, ad ogni occorrenza dell’identificatore.
Il vantaggio che si ha ad usare le direttive di definizione è quello di non appesantire il codice con chiamate o allocazioni di memoria, poiché si sostituisce il codice della macro con le occorrenze dell’identificatore nel codice sorgente e solo dopo lo si passa la compilatore. Qualcuno potrebbe controbattere che al posto delle sopraccitate direttive si potrebbero usare le parole chiave del C, const per le costanti e inline per le macro (che poi sono delle piccole funzioni); è vero, si può fare, anzi è opportuno non eccedere troppo con l’uso delle direttive che, invece, devono essere usate in forma alquanto limitata e solamente in quei casi in cui la sostituzione apporti un beneficio reale al programma ed alla leggibilità del sorgente. Ovviamente #undef serve solo per annullare il compito di ciò che abbiamo definito con l’eventuale #define.
Per fare un esempio presentiamo un pezzo di codice che fa uso delle direttive di definizione:
#include <stdio.h>
#define NUMERO 5 #define QUADRATO(a) (a)*(a)
int main() { int x;
printf(“Numero : %d n”, NUMERO); x = QUADRATO(NUMERO); printf(“Quadrato: %d n”, x);
#undef NUMERO #define NUMERO 7
printf(“Numero : %d n”, NUMERO); x = QUADRATO(NUMERO); printf(“Quadrato: %d n”, x);
return 0; }
Questo semplice programma stamperà a video,
Numero : 5 Quadrato : 25 Numero : 7 Quadrato : 49
Se vuoi aggiornamenti su Le Direttive di definizione inserisci la tua email nel box qui sotto:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
La tua iscrizione è andata a buon fine. Se vuoi ricevere informazioni personalizzate compila anche i seguenti campi opzionali:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
I Video di HTML.it
Brick & Click: Dionigi Faccenda, l’opportunità IoT e Cloud
Tecnologia e cloud a supporto della nuova rivoluzione industriale. Ne abbiamo parlato con Dionigi Faccenda, sotto al palco dell’OVH World […]