test di verificaDomanda
Qual è l'output di questo programma?
immagine del test



1 / 5 domande



Vuoi visualizzarlo sul tuo sito?

#define (linguaggio C)

Nel linguaggio C la direttiva #define è usata per definire le macro o dei valori di sistema durante la preprocessione del codice sorgente.

La sintassi

#define NOME [ valore ]

Per convenzione i nomi delle macro sono scritti con le lettere maiuscole.

La direttiva #define deve essere indicata alle prime righe del codice sorgente del programma C, prima della funzione main().

Un esempio pratico

un esempio di utilizzo della direttiva #define in un programma C

In questo esempio la direttiva assegna alla costante VERSIONE il valore 3.

Nota. La direttiva #define è usata anche per creare formule macro durante la preprocessione del linguaggio C.

Come funziona la direttiva #define

Nelle prime fasi della compilazione del codice, il preprocessore legge e sostituisce le direttive con le relative costanti senza alcun controllo sintattico.

Esempio

Nel seguente programma la direttiva #define assegna il valore 3 alla costante VERSIONE.

#define VERSIONE 3
int main() {
int v=0;
v=VERSIONE;
return 0;
}

La preprocessione sostituisce la costante VERSIONE con il valore 3.

Per questo motivo le costanti macro sono usate nel codice sorgente della funzione main() senza essere definite, perché sono sostituite con i valori nella preprocessione.

int main() {
int v=0;
v=3;
return 0;
}

Successivamente, il codice sorgente viene compilato in quest'ultima forma.

Esempi pratici

Alcuni esempi pratici di utilizzo della direttiva #define.

Esempio 1

#include <stdio.h>
#define VERSIONE 3
int main() {
printf("La versione e\' %d, VERSIONE);
return 0;
}

La direttiva #define assegna alla costante VERSIONE il valore 3.

Nella funzione main() l'istruzione printf stampa sullo schermo il valore della costante VERSIONE.

L'output del programma è il seguente

3

Esempio 2

Il numero dei cicli dell'istruzione for è definito da una variabile macro.

#include <stdio.h>
#define ULTIMO 10
int main()
{int i = 0;
for(i = 0; i< ULTIMO;i++) {
printf(" %d ", i);
return 0;
}

Questo programma stampa i numeri da 0 a 9.

0 1 2 3 4 5 6 7 8 9

Esempio 3 ( macro )

Questo programma crea una macro con #define

#define SOMMA(x,y) x + b
{int i = 0;
int a=1;
int b=2;
int s=0;
s=SOMMA(a,b)
return 0;
}

In fase di preprocessione s=SOMMA(a,b) viene sostituito con s=3.

Esempio 4 (macro)

#define MOLTIPLICA(x,y) x * b
{int i = 0;
int a=1;
int b=2;
int s=0;
s=MOLTIPLICA(a+b,b)
return 0;
}

In questo caso la direttiva s=MOLTIPLICA(a+b,b) è sostituita con s=1+2*2.

Il preprocessore non esegue la somma (a+b) ma si limita a sostituire i valori nel codice.

Attenzione. Il risultato finale della direttiva non è (a+b)*b ma (a+b*b). Sono due espressioni matematiche diverse. Questo può indurre in errore.

Esempio 5 (macro)

#define MOLTIPLICA(x,y) (x) * (b)
{int i = 0;
int a=1;
int b=2;
int s=0;
s=MOLTIPLICA(a+b,b)
return 0;
}

In questo caso la direttiva s=MOLTIPLICA(a+b,b) è sostituita con s=(1+2)*2 perché nella macro sono indicate le parentesi.

In questo modo si risolve il problema dell'esempio precedente.

Esempio 6 ( macro con id condizionale )

In questo caso la direttiva macro utilizza una if condizionale in linea.

#define MAX(x,y) ( (x>y) ? x : y )
int main() {
int a=3;
int b=5;
int s="";
s=MAX(a,b);
return 0;
}

Nella preprocessione s=MAX(a,b) viene sostituita con s=5, perché a>b.

https://www.okpedia.it/define-c


Segnala un errore o invia un suggerimento per migliorare la pagina


Il preprocessore C

Le direttive


FacebookTwitterLinkedinLinkedin