warning come si "aggiustano

l ide 168 da QUESTI warning che si puo fare per sistemarli che pare provengono dalle "librerie"

l ultimo errore (1) l ho aggiunto apposta per far comparire il pulsante copia messaggi di errore

Arduino:1.6.8 (Windows 7), Scheda:"Arduino Nano, ATmega328"

Opzioni di compilazione cambiate, ricompilo tutto
In file included from C:\Users\Ni\AppData\Local\Temp\arduino_modified_sketch_224679\cal22.ino:83:0:

C:\Program Files\Arduino\hardware\arduino\avr\libraries\EEPROM\src/EEPROM.h:43:30: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]

operator const uint8_t() const { return **this; }

^

C:\Program Files\Arduino\hardware\arduino\avr\libraries\EEPROM\src/EEPROM.h:92:26: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]

operator const int() const { return index; }

^

cal22:1162: error: expected unqualified-id before numeric constant

1

^

exit status 1
expected unqualified-id before numeric constant

Questo report potrebbe essere più ricco di informazioni con l'opzione
"Mostra un output dettagliato durante la compilazione"
abilitata in File -> Impostazioni

Ogni warning ha una storia a sé. In questo caso basta togliere il primo const, ma puoi anche fregartene, quel warning è del tutto innocuo. Occhio che questo non vale affatto per tutti i warning ;).

ma devo "sistemare" io una libreria ufficiale dell'ide? :o

elrospo:
ma devo "sistemare" io una libreria ufficiale dell'ide? :o

Assolutamente no :slight_smile: const non è un errore, in CPP è buna norma metterlo praticamente in tutti i campi dove non si prevedono modifiche, viene vista come una garanzia. Ti vorrei fare un esempio

int test(char *s) {...}

in questa funzione accetto in ingresso una stringa, anche se la mia intenzione è non compromettere e corrompere i dati puntati da s potrei commettere un errore, creando un bug che magari si presenta raramente ma in quei casi compromette la stringa s portando ad interminabili sessioni di debug se siamo fortunati e ci accorgiamo dell'errore.

int test(const char * const s) {...}

Sembra la stessa funzione ma a differenza di quella precedente se io commettessi lo stesso errore ipotizzato in quel caso il compilatore me lo segnalerebbe come una violazione di "costanza".

Questo è solo il primo esempio che mi viene legato alla keyword const nell'ambito delle librerie.

Prendiamo come buon metodo di programmazione l'uso delle const quando non è strettamente necessario avere delle variabili.
Giusto per cultura ti rimanderei a questo semplice articolo.

Tutto questo discorso per giustificare l'apparente "sovrabbondanza" di const.

Come ti ha detto sukko puoi tranquillamente ignorarlo.

In questo caso però è un const sul valore di ritorno, che ha poco senso, e GCC ti informa appunto che lo ignorerà. In teoria dovresti sì correggere le librerie ufficiali, e magari fare una pull request, ma in questo caso direi che è più semplice guardare da un'altra parte ;).

potresti provare a mettere questa linea di codice prima di tutto

#pragma GCC diagnostic ignored "-Wignored-qualifiers"

Ma dubito che funzioni perché Arduino compila prima le librerie e poi il progetto.