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

salvo
(salvo prima che perdo tutto :-P)
(salvo)
#define NUM 10
#define EXPR(a) (a)==6 ? 6 : 0
 
#ifdef NUM
#if NUM==10
printf("NUM è uguale a 10.\n");
printf("NUM è minore di 10: %d\n", NUM);
#else
printf("NUM è maggiore di 10 o non definito: %d\n", NUM);
#endif
#else
printf("NUM non è definito.\n", NUM);
#endif
return 0;
 
==={{IndexItem|#include}}<tt>#include</tt>===
La direttiva <tt>#include</tt> è molto importante: permette di includere un file C in un altro. La sua sintassi è la seguente:
 
#include <file.h>
#include "file.h"
 
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.
 
==={{IndexItem|#line}}<tt>#line</tt>===
 
La direttiva <tt>#line</tt> permette di alterare il contenuto delle [[#Macro|macro]] [[#__LINE__|__LINE__]] e [[#__FILE__|__FILE__]].
 
La sintassi è:
 
#line numerolinea "nomefile"
 
Esempio:
<pre>
#include <stdio.h>
#include <stdlib.h>
 
#line 70 "prova.c"
 
int main(void) //linea 71
{ //Linea 72
printf("Linea: %d; File: %s\n", __LINE__, __FILE__); //Linea 73
}
</pre>
 
Il file è opzionale.
 
==={{IndexItem|#pragma}}<tt>#pragma</tt>===
La direttiva <tt>#pragma</tt> serve per inviare particolari istruzioni al compilatore. Le opzioni disponibili variano da compilatore a compilatore, per cui è consigliabile consultarne la documentazione.
 
==={{IndexItem|#undef}}<tt>#undef</tt>===
La direttiva <tt>#undef</tt> serve per cancellare delle macro definite in precedenza con <tt>#define</tt>. Sintassi:
 
#undef macro
 
Esempio:
<pre>
#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
#define NUM 10
printf("NUM: %d\n", NUM);
#undef NUM
}
</pre>
 
==Operatori==