PDA

View Full Version : [C], errore del compilatore o cosa?


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

Fenomeno85
15-02-2005, 10:23
il codice funziona basta che metti * nella prima riga del commento.
Uno switch non era un pò meglio??
E per l'ennesima volta indenta i programmi.

~§~ Sempre E Solo Lei ~§~

D4rkAng3l
15-02-2005, 10:48
Originariamente inviato da Fenomeno85
il codice funziona basta che metti * nella prima riga del commento.
Uno switch non era un pò meglio??
E per l'ennesima volta indenta i programmi.

~§~ Sempre E Solo Lei ~§~

oddiooooo mi stò sentendo tremendamente idiota..... :eek: :cry: :muro:

Fenomeno85
15-02-2005, 16:26
leggi bene cosa ti dicono gli errori ;)

~§~ Sempre E Solo Lei ~§~

sirus
03-03-2005, 15:38
Originariamente inviato da Fenomeno85
il codice funziona basta che metti * nella prima riga del commento.
Uno switch non era un pò meglio??
E per l'ennesima volta indenta i programmi.

~§~ Sempre E Solo Lei ~§~
come darti torto :D ma in realtà si dice identa e non indenta ;)

71104
03-03-2005, 15:50
Originariamente inviato da sirus
come darti torto :D ma in realtà si dice identa e non indenta ;)
questa sinceramente mi è nuova O_o
sei sicuro?

sirus
03-03-2005, 16:47
si :p almeno credo :D
a dirla tutta non ne sono proprio convinto ma mi hanno sempre detto così e quindi... :oink:

Ubi-Wan
03-03-2005, 18:01
Originariamente inviato da sirus
come darti torto :D ma in realtà si dice identa e non indenta ;)

è uno scherzo vero? :D

sirus
03-03-2005, 18:07
vedi posto sopra :rolleyes: non ne sono sicuro :muro:

cionci
03-03-2005, 20:18
Originariamente inviato da D4rkAng3l
dite che se cambio compilatore funziona?quale uso?
Consiglio...il compilatore ha praticamente sempre ragione...

71104
03-03-2005, 23:46
e che è, un cliente? :D
(scusa non resistevo :D)

cionci
04-03-2005, 06:07
In che senso ? :confused:

Marinelli
04-03-2005, 07:56
Nel senso che anche il cliente ha sempre ragione ;)

Dai, ti perdoniamo... era ancora presto :D:D