D4rkAng3l
15-02-2005, 10:10
Ciao, stavo facendo un semplice esempio sui vettori di puntatori a funzione...il mio compilatore (mi pare djgcc per windows) non me lo compila e mi dà un errore..la cosa strana è che l'errore non è nel mio programma ma nel file di libreria incluso stdio.h
Eccovi il codice ed il messaggio di errore:
/ Dimostrazione di utilizzo di un puntatore a funzione */
#include <stdio.h>
void funzione1 (int);
void funzione2 (int);
void funzione3 (int);
int main(){
/* f è un vettore di 3 puntatori a funzioni che come argomento ricevono un intero e non restituiscono alcun valore */
void (*f[3])(int) = {funzione1, funzione2, funzione3};
int scelta;
printf("Inserire un numero da 0 a 2, 3 per terminare: ");
scanf("%d", &scelta);
while(scelta>=0 && scelta<3){
(*f[scelta])(scelta); // Invoca la funzione puntata dalla variabile scelta nel vettore e gli passa il valore della var
printf("Inserire un numero da 0 a 2, 3 per terminare: ");
scanf("%d", &scelta);
}
printf("Hai inseito 3 per terminare\n");
return 0;
}
void funzione1(int a){
printf("Hai inserito %d così è stata invocata funzione1\n", a);
}
void funzione2(int b){
printf("Hai inserito %d così è stata invocata funzione2\n", b);
}
void funzione3(int c){
printf("Hai inserito %d così è stata invocata funzione3\n", c);
}
E questo è l'errore:
D:\gcc\esempi3\vettpuntfunz.c:1: parse error before `/'
In file included from D:\gcc\esempi3\vettpuntfunz.c:3:
..\lib\gcc-lib\i386-mingw32\2.95.2\..\..\..\..\include\stdio.h:195: type specifier omitted for parameter
..\lib\gcc-lib\i386-mingw32\2.95.2\..\..\..\..\include\stdio.h:195: parse error before `)'
..\lib\gcc-lib\i386-mingw32\2.95.2\..\..\..\..\include\stdio.h:274: syntax error before `('
..\lib\gcc-lib\i386-mingw32\2.95.2\..\..\..\..\include\stdio.h:276: syntax error before `('
Failure
A voi funziona o vi dà lo stesso problema?dite che se cambio compilatore funziona?quale uso?
Grazie
Andrea
Eccovi il codice ed il messaggio di errore:
/ Dimostrazione di utilizzo di un puntatore a funzione */
#include <stdio.h>
void funzione1 (int);
void funzione2 (int);
void funzione3 (int);
int main(){
/* f è un vettore di 3 puntatori a funzioni che come argomento ricevono un intero e non restituiscono alcun valore */
void (*f[3])(int) = {funzione1, funzione2, funzione3};
int scelta;
printf("Inserire un numero da 0 a 2, 3 per terminare: ");
scanf("%d", &scelta);
while(scelta>=0 && scelta<3){
(*f[scelta])(scelta); // Invoca la funzione puntata dalla variabile scelta nel vettore e gli passa il valore della var
printf("Inserire un numero da 0 a 2, 3 per terminare: ");
scanf("%d", &scelta);
}
printf("Hai inseito 3 per terminare\n");
return 0;
}
void funzione1(int a){
printf("Hai inserito %d così è stata invocata funzione1\n", a);
}
void funzione2(int b){
printf("Hai inserito %d così è stata invocata funzione2\n", b);
}
void funzione3(int c){
printf("Hai inserito %d così è stata invocata funzione3\n", c);
}
E questo è l'errore:
D:\gcc\esempi3\vettpuntfunz.c:1: parse error before `/'
In file included from D:\gcc\esempi3\vettpuntfunz.c:3:
..\lib\gcc-lib\i386-mingw32\2.95.2\..\..\..\..\include\stdio.h:195: type specifier omitted for parameter
..\lib\gcc-lib\i386-mingw32\2.95.2\..\..\..\..\include\stdio.h:195: parse error before `)'
..\lib\gcc-lib\i386-mingw32\2.95.2\..\..\..\..\include\stdio.h:274: syntax error before `('
..\lib\gcc-lib\i386-mingw32\2.95.2\..\..\..\..\include\stdio.h:276: syntax error before `('
Failure
A voi funziona o vi dà lo stesso problema?dite che se cambio compilatore funziona?quale uso?
Grazie
Andrea