A me pare che la versione 0022 dell'IDE di Arduino sia peggiore della precedente.
Se tento di compilare il codice che si trova a questa pagina mi restituisce errore sulla dichiarazione di "T" dicendomi :
error: expected ',' or '...' before '&' token
error: ISO C++ forbids declaration of 'T' with no type
error: 'T' has not been declared
mentre con la 0021 lo stesso codice si compila correttamente.
Io non conosco il C++ ma da quanto ho letto in rete mi pare che la dichiarazione sia corretta. Poi se l'IDE 0021 lo compila, credo che non sia sbagliato. Qualcuno più bravo di me mi conferma la correttezza del codice? Se è giusto, segnalo il bug.
a me più che un'errore di arduino sembra un aggiornamento dello standard del linguaggio... sicuri che sulle vecchie versioni compila tranquillo e non da per caso un warning "deprecated"?
provate a sostituire con
infatti, per questo dico che secondo me è il compilatore... probabilmente la versione 22 passa dei nuovi parametri, oppure è proprio cambiata la versione di compilatore (però allora su linux dovrebbe funzionare lo stesso visto che come compilatore usa il classico GCC installato esternamente all'IDE)
che errore ti dà usando template?
Ciao leo, su che quale sistema operativo stai facendo la prova?
Ma l'IDE non dovrebbe fare solo da frontend al compilatore?
Si esatto, però se a gcc non fornisci argomenti corretti potrebbe andare in errore.
Domandati come mai non devi dichiarare le funzioni utente, l'ide aggiunge il prototipo per te, cioè c'è un preprocessore che modifica il pde lo fa diventare cpp e aggiunge ciò che manca.
Ho compilato a mano, a me da solo warning:
sketch_feb06a.cpp: In function 'int EEPROM_readAnything(int, T&) [with T = config_t]':
sketch_feb06a.cpp:32:41: instantiated from here
sketch_feb06a.cpp:19:15: warning: comparison between signed and unsigned integer expressions
sketch_feb06a.cpp: In function 'int EEPROM_writeAnything(int, const T&) [with T = config_t]':
sketch_feb06a.cpp:43:46: instantiated from here
sketch_feb06a.cpp:10:15: warning: comparison between signed and unsigned integer expressions
Però potrebbe essere che ho dato dei parametri errati a gcc.
gcc version 4.5.0, avr-libc-1.6.7-2.fc8.
Con L'ide questi non si vedono perche soppressi, forse per evitare di confondere il principiante.
Ciao.
Beh, visto che l'IDE (per stessa ammissione dei suoi sviluppatori) è indirizzata ad un'utenza alle prime armi (come me), se qualcosa è stato modificato in "background" allora forse queste modifiche sono da rivedere. Cmq la segnalazione l'ho fatta, vedremo cosa risponde il team di sviluppo.