C/Compilatore e precompilatore/Direttive: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
salvo prima che perdo tutto :-P |
salvo |
||
Riga 46:
#define NUM 10
#define EXPR(a) (a)==6 ? 6 : 0
#ifdef NUM
#if NUM==10
printf("NUM è uguale a 10.\n");
Line 57 ⟶ 58:
printf("NUM è minore di 10: %d\n", NUM);
#else
printf("NUM è maggiore di 10
#endif
#else
printf("NUM non è definito.\n", NUM);
#endif
return 0;
Line 64 ⟶ 68:
==={{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==
|