Andando ad aggiungere una piccola cosa al mio contatore Geiger, ho notato dei warning. Non so se precedentemente non li avevo abilitati, oppure le versioni precedenti dell'IDE non mostravano questo avviso.
Breve riassunto: il progetto è iniziato nel 2016, a poco più di un anno da quando ho iniziato con Arduino e con il C. Allora usai con disinvoltura String; poi, resomi conto dei problemi che dava, tanto più aumentando le funzioni e la complessità del mio contatore Geiger (fa misure a tempo fisso, a precisione fissa, a tempo infinito con calcolo continuo della media e stima dell'errore e altro), il modo più semplice che trovai (pur senza capirlo fino in fondo) per risolvere il problema senza sconvolgere tutto il programma fu sostituire le variabili
String nome_variabile; con char *nome_variabile;
Ora ho rilevato molti warning di questo tipo, seppure tutto funzioni ottimamente:
warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
char *versione=" v1.14b";
char *percorso=__FILE__;
char *tipo[]={"", "SBM-19", "SBM-20", "2xSBM-20", "SBM-21", "SBT-9", "SBT-11A", " SI-1G", " SI-3BG", "SI-19BGM", " SI-22G", " SI-29BG", "LND-712", " 0,0", "Variabile"};
Sono warning importanti?
Quella forma può dare problemi con futuri aggiornamenti del C++?
Come prova "sistemistica" ti consiglierei di fare installazioni "portable" di versioni vecchie dell'ide, senza aggiornare il core, per controllare che appunto non siano aggiornamenti del compilatore.
Userò strcmp(), hai ragione (come ho detto, il programma l'ho iniziato 4 anni fa con le String e da parecchio funziona. Ogni tanto aggiungo o miglioro qualcosa...), però nella pratica funziona, tanto che da un warning, non un errore! Perché?... Associa un valore numerico all'array?
Datman:
Perché?... Associa un valore numerico all'array?
Secondo me NON funziona, o meglio ... magari funziona per caso ... dato che, come dice il compilatore, il risultato di quel confornto "results in unspecified behavior" e quindi, in un comportamento NON prevedibile ... può succedere di tutto ... anche che a volte dia un valore che a te sembra giusto