dichiarazione
#define STRINGA1 STRINGA2


in pratica é un semplice sostituzione di testo in cui sostituisce in tutto il programma la STRINGA1 con la STRINGA2 e poi si compila
si da ordine al compilatore sostituire con la STRINGA2 la STRINGA1 in tutto il programma e poi compilare

esempio:
#define SALVE Ciao, Come stai?

SALVE avrà come valore: Ciao, Come stai?
cioé tutto quello che viene dopo lo spazio di separazione dal nome della costante

#include <stdio.h>
#define SALVE "Ciao! come stai?\n"
int main (void)

{printf (SALVE);
return 0;}

comparirà la scritta Ciao! come stai?
infatti la costante ha come valore anche le " che sono necessarie alla funzione printf per visualizzare le stringhe


#include <stdio.h>
#define SALVE Ciao! come stai?
int main (void)
{printf ("SALVE");
return 0;}

comparirà la scritta SALVE
questo perché printf non farà la conversione ma interpreta la STRINGA come scritta.


é possibile anche concatenare le dichiarazioni ed usare una costante in una dichiarazione successiva

esempio
#include <stdio.h>
#define UNO 1
#define DUE UNO+UNO
#define TRE DUE+UNO
TRE avrà come valore 1+1+1



operatore inclusione ##
é possibile con l'operatore ## unire il valore di più costanti

esempio: visualizza 123456
#include <stdio.h>
#define UNIONE 123 ## 456
int main (void)

{printf ("%d\n", UNIONE);
return 0;}



macro
#define viene usato anche per creare le macro, cioè delle sostituzioni di testo più complesse che possono sostituire anche varie e proprie funzioni