Pagina 1 di 3
Dichiarazione: const rom char*

Inviato:
12 ago 2013, 12:07
da wizard
Salve
Cosa vuol dire e quale funzione realizza la scritta "rom" che si trova in "const rom char *"?
Aggiungo che mi sono imbattuto in essa andando a realizzare una funzione di scrittura di una stringa di caratteri su un LCD
Se non metto "rom" mi dà il seguente errore: "Error [1109] type mismatch in redeclaration of 'scrivi_stringa'"...perché mi dà questo errore?
Re: const rom char *

Inviato:
12 ago 2013, 12:17
da TardoFreak
Immagino che tu ti riferisca al compilatore C18, vero?
Sempre specificare il compilatore di riferimento.
Comunque l' uso della parola chiave rom è uno dei pochissimi particolari non standard del C18. Se con i compilatori ANSI-C per microcontrollori è sufficiente specificare la classe di memorizzazione const per far si che il dato risieda in ROM con il C18 occorre specificarlo chiaramente.
Re: const rom char *

Inviato:
12 ago 2013, 12:19
da c1b8
Sicuro che la stessa funzione non sia definita più volte in file .h o .c diversi?
Re: const rom char *

Inviato:
12 ago 2013, 12:31
da wizard
Grazie
TardoFreak 
Sì è un C18, chiedo scusa
Quindi se ho ben capito mi permette di memorizzare il dato nella ROM...e questo quale vantaggio mi porta? perché mi fa sparire quell'errore di type mismatch?
No
c1b8, al 100%

Re: const rom char *

Inviato:
13 ago 2013, 15:11
da Paolino
wizard ha scritto:Quindi se ho ben capito mi permette di memorizzare il dato nella ROM...e questo quale vantaggio mi porta?
Questa possibilità che ti si pone è utilissima per memorizzare tabelle, dati costanti, che devono essere letti "rapidamente".
Ciao.
Paolo.
Re: Dichiarazione: const rom char*

Inviato:
14 ago 2013, 17:47
da wizard
Grazie
Paolino
Resta ancora oscuro il motivo per cui sparisce l'errore
Non è possibile che con quella istruzione il dato viene scritto su un numero di bit più grande?
Re: Dichiarazione: const rom char*

Inviato:
15 ago 2013, 9:44
da Paolino
L'errore scompare perché così vuole la sintassi del compilatore.
Sul fatto che la memorizzazione avvenga su word a 14 bit, beh potrebbe anche essere ma dovrei dare una lettura all'help del C18.
Ciao.
Paolo.
Re: Dichiarazione: const rom char*

Inviato:
17 ago 2013, 14:29
da wizard
Ti ringrazio
Paolino 
Re: Dichiarazione: const rom char*

Inviato:
19 ago 2013, 18:17
da Shockwaver
Il "type mismatch in redeclaration" in genere accade quando definisci il prototipo di una funzione in un modo (generalmente nel file .h o l'inizio del file .c) e poi l'intestazione della funzione vera e propria, dove scrivi il codice, la definisci con altri parametri. Probabilmente il prototipo di quella fuzione è definito con un parametro semplicemente const *char, non rom...
Mi fai un copia-incolla della riga con l'errore e mi dici il nome del file?
Re: Dichiarazione: const rom char*

Inviato:
3 set 2013, 22:49
da wizard
Chiedo scusa per il ritardo
ShockwaverIl problema da te esposto mi è noto ma ti assicuro che non è questo il caso, la scritta rom è presente sia nel .h che nel .c
Questo è il .c ---->
void scrivi_stringa(const rom char *str)Questo è il .h ---->
void scrivi_stringa(const rom char *);