Salve a tutti e buongiorno,
vi contatto per un piccolo problema che sto riscontrando in un progetto in C.
Il progetto è formato da tre file: main.c,function.c e header.c
Il problema è che, al momento della compilazione, mi da questo problema:
codice:
C:\Users\Marco\Desktop\PROGRAMMAZIONE II\Soluzioni esercizi laboratorio\02-06 Estrazuione signed e unsigned\function.c||In function 'confronto_unsigned':|
C:\Users\Marco\Desktop\PROGRAMMAZIONE II\Soluzioni esercizi laboratorio\02-06 Estrazuione signed e unsigned\function.c|6|error: 'word' undeclared (first use in this function)|
C:\Users\Marco\Desktop\PROGRAMMAZIONE II\Soluzioni esercizi laboratorio\02-06 Estrazuione signed e unsigned\function.c|6|note: each undeclared identifier is reported only once for each function it appears in|
C:\Users\Marco\Desktop\PROGRAMMAZIONE II\Soluzioni esercizi laboratorio\02-06 Estrazuione signed e unsigned\function.c||In function 'confronto_signed':|
C:\Users\Marco\Desktop\PROGRAMMAZIONE II\Soluzioni esercizi laboratorio\02-06 Estrazuione signed e unsigned\function.c|34|error: 'word' undeclared (first use in this function)|
C:\Users\Marco\Desktop\PROGRAMMAZIONE II\Soluzioni esercizi laboratorio\02-06 Estrazuione signed e unsigned\function.c|54|warning: control reaches end of non-void function [-Wreturn-type]|
C:\Users\Marco\Desktop\PROGRAMMAZIONE II\Soluzioni esercizi laboratorio\02-06 Estrazuione signed e unsigned\function.c||In function 'confronto_unsigned':|
C:\Users\Marco\Desktop\PROGRAMMAZIONE II\Soluzioni esercizi laboratorio\02-06 Estrazuione signed e unsigned\function.c|26|warning: control reaches end of non-void function [-Wreturn-type]|
||=== Build finished: 2 errors, 2 warnings (0 minutes, 0 seconds) ===|
Vi allego anche i tre file:
main.c :
codice:
#include <"header.h">
int main()
{
//Dichiarazione
int ris;
register int mask;
unsigned short int scelta;
//Menu' di scelta
puts("Quale tipo vuoi inserire?");
puts("Carattere [0]");
puts("Short [1]");
puts("Long [2]");
scanf("%d",&scelta);
fflush(stdin);
switch(scelta){
case 0:
mask=0xFF; //Costruzione della maschera
puts("\nDigita un carattere");
scanf("%c",&word.C[0]); //Lettura
word.C[2]=mask&word.C[0]; //Estrazione bit
printf("\nValore estratto %d\n",word.C[2]);
printf("Se i valori sono uguali, il risultato sara' 1, altrimenti 0");
printf("\nConfronto unsigned: %d\n",confronto_unsigned(scelta));
printf("Confronto signed: %d\n",confronto_signed(scelta));
break;
case 1:
mask=0xFFFF;
puts("\nDigita un numero short");
scanf("%ld",&word.S[0]);
word.S[2]=mask&word.S[0];
printf("\nValore estratto %d\n",word.S[2]);
printf("Se i valori sono uguali, il risultato sara' 1, altrimenti 0");
printf("\nConfronto unsigned: %d\n",confronto_unsigned(scelta));
printf("Confronto signed: %d\n",confronto_signed(scelta));
break;
case 2:
mask=0xFFFFFFFF;
puts("\nDigita un numero long");
scanf("%ld",&word.L);
ris=mask&word.L;
printf("Valore estratto %d\n",ris);
printf("Se i valori sono uguali, il risultato sara' 1, altrimenti 0");
printf("\nConfronto unsigned: %d\n",confronto_unsigned(scelta));
printf("Confronto signed: %d\n",confronto_signed(scelta));
break;
}
system("pause");
return 0;
}
function.c
codice:
unsigned short int confronto_unsigned (unsigned short int caso)
{
switch (caso)
{
case 0:
if ((unsigned char)word.C[0] == word.C[2])
return 1;
else
return 0;
break;
case 1:
if ((unsigned short)word.S[0] == word.S[2])
return 1;
else
return 0;
break;
case 2:
if ((unsigned long *)&word.L == word.L)
return 1;
else
return 0;
break;
}
}
//Function che effettua un confronto signed
unsigned short int confronto_signed (unsigned short int caso)
{
switch (caso)
{
case 0:
if ((signed char)word.C[0]==word.C[2])
return 1;
else
return 0;
break;
case 1:
if ((signed short)word.S[0]==word.S[2])
return 1;
else
return 0;
break;
case 2:
if ((signed long)word.L==word.L)
return 1;
else
return 0;
break;
}
}
header.h
codice:
#include <stdio.h>
unsigned short int confronto_unsigned (unsigned short int);
unsigned short int confronto_signed (unsigned short int);
union word32bit
{
long L;
short S[2];
char C[4];
} word;
Per quale motivo genera questo errore?
Grazie mille e scusatemi della perdita di tempo.
Cordiali saluti,
Marco