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

finitoooo!!!!
(salvo)
(finitoooo!!!!)
 
La direttiva <tt>#line</tt> permette di alterare il contenuto delle [[#Macro|macro]] [[#__LINE__|__LINE__]] e [[#__FILE__|__FILE__]].
Essa non salta ad un altro punto del programma; modifica semplicemente queste macro.
 
La sintassi è:
{ //Linea 72
printf("Linea: %d; File: %s\n", __LINE__, __FILE__); //Linea 73
return 0;
}
</pre>
printf("NUM: %d\n", NUM);
#undef NUM
return 0;
}
</pre>
 
===L'operatore {{IndexItem|# (operatore)}}<tt>#</tt>===
 
Questo operatore serve per trasformare una sequenza di caratteri in stringa all'interno di una macro.
 
Esempio:
 
#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
#define str(s) # s
printf(str(Il C mi piace molto.));
return 0;
}
 
===L'operatore {{IndexItem|## (operatore)}}<tt>##</tt>===
 
Questo operatore si chiama ''operatore di concatenamento''. Esempio:
 
<pre>
#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
#define cat(x,y) x ## y
int cd=10;
printf("%d\n", cat(c,d));
return 0;
}
</pre>
 
Questo programma stamperà il numero 10.
 
===L'operatore {{IndexItem|defined (operatore)}}<tt>defined</tt>===
 
==={{IndexItem|__DATE__}}<tt>__DATE__</tt>===
Questa macro contiene la data della compilazione nel formato mese/giorno/anno.
 
==={{IndexItem|__FILE__}}<tt>__FILE__</tt>===
Questa macro contiene il nome del file correntemente in compilazione. Può essere modificata con la direttiva [[##line|#line]].
 
==={{IndexItem|__LINE__}}<tt>__LINE__</tt>===
Questa macro contiene il numero della linea correntemente in compilazione. Può essere modificata con la direttiva [[##line|#line]].
 
==={{IndexItem|__TIME__}}<tt>__TIME__</tt>===
Questa macro contiene l'ora della compilazione nel formato ore:minuti:secondi.
 
==={{IndexItem|__STDC__}}<tt>__STDC__</tt>===
Il contenuto di questa macro varia da compilatore a compilatore. Solitamente, se essa è definita, il compilatore accetterà soltanto codice C standard.
 
[[Categoria:Linguaggio C|Istruzioni al precompilatore]]