test di verificaDomanda
Qual è l'output di questo programma?
immagine del test



1 / 2 domande



Vuoi visualizzarlo sul tuo sito?

Macro di preprocessione (linguaggio C)

Le macro sono funzioni di preprocessione del linguaggio C. Sono elaborate dal preprocessore durante la compilazione del programma.

Creazione macro in C

Per creare una macro si utilizza la direttiva di preprocessione #define seguita dal nome e dall'espressione della funzione.

#define NOME(argomenti) espressione

Un esempio pratico

#define SOMMA(a,b) (a+b)

Per convenzione i nomi delle formule macro di preprocessione sono scritti con lettere maiuscole.

un esempio pratico di macro in C

È consigliabile indicare l'espressione tra parentesi, anche se non è obbligatorio, per mantenere la precedenza degli operatori matematici nella formula.

Nota. Le macro sono indipendenti dal tipo di dato. È possibile usare come parametri i dati numerici e non, senza errori di compilazione.

Esempi pratici di macro

Esempio 1 ( somma )

Nella riga 2 è definita una semplice macro ADD con due parametri in input (a,b) che somma gli argomenti (a+b).

  1. #include <stdio.h>
  2. #define ADD(a,b) (a+b)
  3. int main() {
  4. int c=2;
  5. int d=3;
  6. printf(" %d ", ADD(c,d));
  7. return 0;
  8. }

La riga 6 chiama la macro ADD passandogli i parametri c e d.

La macro elabora l'espressione e calcola il risultato.

5

L'output del programma è 5 perché l'espressione c+d equivale a 2+3.

Esempio 2 ( concatenazione stringhe )

La macro nella riga 2 concatena i due argomenti in entrata tramite l'operatore di concatenazione ##.

  1. #include <stdio.h>
  2. #define CONC(a,b) a ## b
  3. int main() {
  4. int xy=10;
  5. printf(" %d ", CONC(x,y) );
  6. return 0;
  7. }

Nota. L'operatore ## concatena due valori (a,b) e li unisce in un'unico valore (ab).

La riga 5 richiama la formula CONC passando come parametri i caratteri x e y.

La macro restituisce la concatenazione xy che coincide con il nome della variabile dichiarata nella riga 4.

10

L'output del programma è 10 ossia il valore della variabile xy.

Esempio 3 ( stampa stringa )

Nella riga 2 è definita la macro STAMPA con un solo parametro in entrata (a).

La macro converte il parametro in una stringa tramite l'operatore # e lo stampa sullo schermo tramite l'istruzione printf.

  1. #include <stdio.h>
  2. #define STAMPA(a) printf(#a);
  3. int main() {
  4. STAMPA(attenzione versione obsoleta)
  5. return 0;
  6. }

Nota. L'operatore # mette il parametro tra doppi apici. Ad esempio, se il parametro è 12 viene trasformato in '12'.

La riga 5 richiama la macro STAMPA passando come parametro il messaggio "attenzione versione obsoleta".

La macro trasforma il parametro in una stringa e lo stampa a video.

attenzione versione obsoleta

L'output del programma è la stringa in questione.

Esempio 4 ( valore massimo )

La macro MAX trova il valore massimo dei parametri (a,b) usando una IF in linea.

  1. #include <stdio.h>
  2. #define MAX(a,b) ( (a>b) ? a : b )
  3. int main() {
  4. int a=1;
  5. int b=2;
  6. printf(" %d ", MAX(a,b));
  7. return 0;
  8. }

L'istruzione printf nella linea 7 richiama la macro MAX passandogli le variabili a e b.

La macro seleziona il valore maggiore.

2

L'output del programma è 2 ossia il valore più alto tra le due variabili.

https://www.okpedia.it/macro-c-preprocessione


Segnala un errore o invia un suggerimento per migliorare la pagina


Il preprocessore C

Le direttive


FacebookTwitterLinkedinLinkedin