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

Wikibooks, manuali e libri di testo liberi.
Contenuto cancellato Contenuto aggiunto
Pietrodn (discussione | contributi)
Nessun oggetto della modifica
Pietrodn (discussione | contributi)
salvo prima che perdo tutto :-P
Riga 13: Riga 13:


==={{IndexItem|#define}}<tt>#define</tt>===
==={{IndexItem|#define}}<tt>#define</tt>===
La direttiva <tt>#define</tt> serve per definire {{IndexItem|macro}}macro. Sintassi:
#define nomemacro testomacro


Il testo può essere una {{IndexItem|costanti}}costante o un'{{IndexItem|espressioni}}espressione, anche parametrizzata:
==={{IndexItem|#undef}}<tt>#error</tt>===
<pre>
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
#define NUM 10
#define EXPR(a) (a)==6 ? 6 : 0
printf("%d\n", NUM);
printf("%d\n", EXPR(7));
return 0;
}
</pre>
Abbiamo trattato l'{{IndexItem|operatore ?}}operatore ? [[Linguaggio_C/Blocchi_e_funzioni/Blocchi_if_e_switch#L.27operatore_.3F|qui]].


==={{IndexItem|#if, #else, #elif ed #endif}}<tt>#if, #else, #elif ed #endif</tt>===
==={{IndexItem|#if, #else, #elif ed #endif}}<tt>#if, #else, #elif ed #endif</tt>===

Queste direttive servono per la {{IndexItem|compilazione condizionale}}''compilazione condizionale''.

Esempio:
<pre>
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
#define NUM 10
#define EXPR(a) (a)==6 ? 6 : 0
#if NUM==10
printf("NUM è uguale a 10.\n");
#if EXPR(6)
printf("EXPR ha dato un risultato! %d\n", EXPR(6));
#else
printf("EXPR non ha dato alcun risultato!\n");
#endif
#elif NUM<10
printf("NUM è minore di 10: %d\n", NUM);
#else
printf("NUM è maggiore di 10 o non definito: %d\n", NUM);
#endif
return 0;
}
</pre>


==={{IndexItem|#include}}<tt>#include</tt>===
==={{IndexItem|#include}}<tt>#include</tt>===

Versione delle 16:29, 2 set 2006

Template:Linguaggio C

Il precompilatore può eseguire diverse istruzioni.

Le direttive

Le direttive sono delle istruzioni al precompilatore e dipendono dal compilatore stesso, per cui è consigliabile consultarne la documentazione.

Le direttive non finiscono con il punto e virgola ma con la fin di riga.

Ecco le direttive:

#define

La direttiva #define serve per definire macro. Sintassi:

#define nomemacro testomacro

Il testo può essere una costante o un'espressione, anche parametrizzata:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
#define NUM 10
#define EXPR(a) (a)==6 ? 6 : 0
	
	printf("%d\n", NUM);
	printf("%d\n", EXPR(7));
return 0;
}

Abbiamo trattato l'operatore ? qui.

#if, #else, #elif ed #endif

Queste direttive servono per la compilazione condizionale.

Esempio:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
#define NUM 10
#define EXPR(a) (a)==6 ? 6 : 0
	
#if NUM==10
	printf("NUM è uguale a 10.\n");
#if EXPR(6)
		printf("EXPR ha dato un risultato! %d\n", EXPR(6));
#else
		printf("EXPR non ha dato alcun risultato!\n");
#endif
#elif NUM<10
		printf("NUM è minore di 10: %d\n", NUM);
#else
		printf("NUM è maggiore di 10 o non definito: %d\n", NUM);
#endif
return 0;
}

#include

#line

#pragma

#undef

Operatori

Il preprocessore accetta anche degli speciali operatori:

L'operatore #

L'operatore ##

L'operatore defined

Le macro

Il linguaggio C definisce anche delle macro:

__DATE__

__FILE__

__LINE__

__TIME__

__STDC__