Differenze tra le versioni di "C/Compilatore e precompilatore/Direttive"

+sintassi colorata
m (robot Aggiungo: pl:C/Preprocesor)
(+sintassi colorata)
==={{IndexItem|direttive #define}}<tt>#define</tt>===
La direttiva <tt>#define</tt> serve per definire {{IndexItem|macro}}macro. Sintassi:
<source lang="c">
#define nomemacro testomacro
</source>
 
Il testo può essere una {{IndexItem|costanti}}costante o un'{{IndexItem|espressioni}}espressione, anche parametrizzata:
<source lang="c">
<pre>
#include <stdio.h>
#include <stdlib.h>
return 0;
}
</presource>
Abbiamo trattato l'{{IndexItem|operatore ?}}operatore ? [[Linguaggio_C/Blocchi_e_funzioni/Blocchi_if_e_switch#L.27operatore_.3F|qui]].
 
 
Esempio:
<source lang="c">
<pre>
#include <stdio.h>
#include <stdlib.h>
return 0;
}
</presource>
 
Tale codice, una volta elaborato dal preprocessore, è equivalente al seguente:
<source lang="c">
<pre>
/*... trascrizione completa dei file stdio.h e stdlib.h...*/
 
return 0;
}
</presource>
 
Si noti che il preprocessore sostituisce ogni occorrenza delle macro con il loro testo equivalente.
La direttiva <tt>#include</tt> è molto importante: permette di includere un file C in un altro. La sua sintassi è la seguente:
 
<source lang="c">
#include <file.h>
#include "file.h"
</source>
 
Qual è la differenza fra parentesi angolari e virgolette? Dipende dal compilatore, ma solitamente con le parentesi angolari il {{IndexItem|linker}}linker cerca nelle directory della libreria standard, mentre con le virgolette si cerca il file prima all'interno della directory corrente e poi all'interno delle directory della libreria standard.
La sintassi è:
 
<source lang="c">
#line numerolinea "nomefile"
 
Esempio:
<source lang="c">
<pre>
#include <stdio.h>
#include <stdlib.h>
return 0;
}
</presource>
 
Il file è opzionale.
La direttiva <tt>#undef</tt> serve per cancellare delle macro definite in precedenza con <tt>#define</tt>. Sintassi:
 
<source lang="c">
#undef macro
</source>
 
Esempio:
<source lang="c">
<pre>
#include <stdio.h>
#include <stdlib.h>
return 0;
}
</presource>
 
==Operatori==
Esempio:
 
<source lang="c">
#include <stdio.h>
#include <stdlib.h>
return 0;
}
</source>
 
===L'operatore {{IndexItem|operatore ##}}<tt>##</tt>===
Questo operatore si chiama ''operatore di concatenamento''. Esempio:
 
<source lang="c">
<pre>
#include <stdio.h>
#include <stdlib.h>
return 0;
}
</presource>
 
Questo programma stamperà il numero 10.