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



1 / 2 domande


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


Hai una domanda? Scrivila nei commenti e ti risponderemo qui sulla pagina.


Il preprocessore C

Le direttive




FacebookTwitterLinkedinLinkedin