Differenze tra le versioni di "C/Variabili, operatori e costanti/Costanti"

nessun oggetto della modifica
(cambio avanzamento a 100%cambio avanzamento a 100%)
Ciò che si ottiene è la sostituzione nel sorgente del nome indicato con la sequenza di caratteri che lo segue. Si osservi l'esempio seguente:
<source lang="c">
#define SALUTOSALVE Ciao!, Come stai?
</source>
In questo caso viene dichiarata la costante SALUTOSALVE in modo tale che tutte le occorrenze di questo nome, successive alla sua dichiarazione, vengano sostituite con Ciao! Come stai?. È molto importante comprendere questo particolare: tutto ciò che appare dopo il nome della macro, a parte lo spazio che lo separa, viene utilizzato nella sostituzione. Ecco un esempio:
<source lang="c">
#include <stdio.h>
#define SALUTOSALVE "Ciao! come stai?\n"
int main (void)
{
printf (SALUTOSALVE);
return 0;
}
</source>
In questo caso, SALUTOSALVE può essere utilizzata in un contesto in cui ci si attende una stringa letterale, perché include gli apici doppi che sono necessari per questo scopo. Nell'esempio si vede l'uso della macro-variabile come argomento della funzione printf() e l'effetto del programma è quello di mostrare il messaggio seguente:
Ciao! come stai?
È bene precisare che la sostituzione delle macro-variabili non avviene se i loro nomi appaiono tra apici doppi, ovvero all'interno di stringhe letterali. Si osservi l'esempio seguente:
<source lang="c">
#include <stdio.h>
#define SALUTOSALVE Ciao! come stai?
int main (void)
{
printf ("SALUTOSALVE\n");
return 0;
}
</source>
In questo caso, la funzione printf() emette effettivamente la parola SALUTOSALVE e non avviene alcuna espansione di macro:
SALVE
SALUTO
Una volta compreso il meccanismo basilare della direttiva #define si può osservare che questa può essere utilizzata in modo più complesso, facendo anche riferimento ad altre macro già definite:
 
<source lang="c">
#include <stdio.h>
#define UNITOUNIONE 123 ## 456
int main (void)
{
printf ("%d\n", UNITOUNIONE);
return 0;
}
451

contributi