PDA

View Full Version : [C]Fare il cast di un vettore da "normale" a "const" prima di passarlo a una fun


AnonimoVeneziano
03-02-2004, 18:47
Ciao ,
sto scrivendo un programma cazzuto per imparare , è un semplice simulatore di computer , ma mi trovo con un problema (altrettanto cazzuto :D )

Allora , io volevo attuare "il principio del minimo privilegio" per scrivere sto programma , ossia quello di consentire il meno possibile in scrittura , per evitare errori logici infidi :)

Allora , io ho questo vettore qua :

int memory[100] = {0};

Che è un vettore normalissimo , ora io lo voglio passare alla funzione dump:

void dump(int, int, int, int, int, const int []);

e come vedete, dato che la funzione non ha necessità di modificare il vettore ho specificato che la funzione deve riceverlo come "const" , ma GCC mi da questi Warning alla compilazione :


bash-2.05b$ gcc -O0 -g simpletron.c -o simpletron
simpletron.c: In function `main':
simpletron.c:75: warning: passing arg 6 of `dump' makes pointer from integer without a cast
simpletron.c:86: warning: passing arg 6 of `dump' makes pointer from integer without a cast
simpletron.c:98: warning: passing arg 6 of `dump' makes pointer from integer without a cast
simpletron.c:109: warning: passing arg 6 of `dump' makes pointer from integer without a cast
simpletron.c:131: warning: passing arg 6 of `dump' makes pointer from integer without a cast
simpletron.c:136: warning: passing arg 6 of `dump' makes pointer from integer without a cast


Praticamente mi dice che io sto passando a una funzione un vettore normale in un vettore "const" senza fare prima il cast , allora io mi dico , FACCIAMO STO CAST!! :D

Solo che ho provato a passare i dati alla funzione come :
dump(accumulator, instructionCounter, instructionRegister, operationCode, operand, (const) memory);
Ma probabilmente non funziona , perchè mi da i warning lo stesso :D

Come faccio a farli scomparire? (a parte settare il vettore della funzione come "non const" :D )

Grazie per l'aiuto al niubbo della programmazione :)

Ciao

AnonimoVeneziano
03-02-2004, 19:54
Scusate , mi ha aiutato VICIUS :D

Ho risolto , dovevo castare con (const int*) :D

Grazie a tutti :D

Ciao

Black imp
04-02-2004, 00:28
prego prego figurati :cool:


cnque scherzi a parte sei stato gentile a postare la soluzione per tutti; mi hai fatto pensare a una cosa cui non avevo pensato. grazie! :p