C/Compilatore e precompilatore/Direttive: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
BimBot (discussione | contributi)
m robot Aggiungo: pl:C/Preprocesor
Pietrodn (discussione | contributi)
+sintassi colorata
Riga 12:
==={{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>
Line 28 ⟶ 30:
return 0;
}
</presource>
Abbiamo trattato l'{{IndexItem|operatore ?}}operatore ? [[Linguaggio_C/Blocchi_e_funzioni/Blocchi_if_e_switch#L.27operatore_.3F|qui]].
 
Line 40 ⟶ 42:
 
Esempio:
<source lang="c">
<pre>
#include <stdio.h>
#include <stdlib.h>
Line 67 ⟶ 69:
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...*/
 
Line 79 ⟶ 81:
return 0;
}
</presource>
 
Si noti che il preprocessore sostituisce ogni occorrenza delle macro con il loro testo equivalente.
Line 86 ⟶ 88:
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.
Line 98 ⟶ 102:
La sintassi è:
 
<source lang="c">
#line numerolinea "nomefile"
 
Esempio:
<source lang="c">
<pre>
#include <stdio.h>
#include <stdlib.h>
Line 112 ⟶ 117:
return 0;
}
</presource>
 
Il file è opzionale.
Line 122 ⟶ 127:
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>
Line 136 ⟶ 143:
return 0;
}
</presource>
 
==Operatori==
Line 147 ⟶ 154:
Esempio:
 
<source lang="c">
#include <stdio.h>
#include <stdlib.h>
Line 156 ⟶ 164:
return 0;
}
</source>
 
===L'operatore {{IndexItem|operatore ##}}<tt>##</tt>===
Line 161 ⟶ 170:
Questo operatore si chiama ''operatore di concatenamento''. Esempio:
 
<source lang="c">
<pre>
#include <stdio.h>
#include <stdlib.h>
Line 172 ⟶ 181:
return 0;
}
</presource>
 
Questo programma stamperà il numero 10.