Arduino IDE 0022 buggata?

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 [u]stesso[/u] 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.

La 0018 lavora con quel codice, ho provato. Cosa cambia non lo so.

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

Ma l’IDE non dovrebbe fare solo da frontend al compilatore?
Eppure sullo stesso computer con la 0021 il codice si compila, con la 0022 no.

Mi pare strano. Ripeto, io non conosco le classi ed i template del C++ però vedo che l’errore viene sollevato solo sulla 0022.

PS:
con le cose peggiorano XD

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.

Ciao.

magari è proprio uno di questi di meccanismi che non trattando correttamente il template/class fa casino…

Segnalo il problema.

prima sarebbe da capire il problema. Ovvero provare a compilare a mano per capire se il problema è il compilatore, l'IDE o i parametri.

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.