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:
Vi allego anche i tre file: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) ===|
main.c :
function.ccodice:#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; }
header.hcodice: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; } }
Per quale motivo genera questo errore?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;
Grazie mille e scusatemi della perdita di tempo.
Cordiali saluti,
Marco

					
					
					
						
  Rispondi quotando