Per mia deformazione mentale, sono abituato a scrivere il codice in relative classi di appartenenza, questo per avere codice piu facile da manutenzionare che un solo file .ino con 3000-4000 righe di programma e ritrovare tra tante righe la funzione che ti serve.
Detto questo se mi serve una variabile utilizzato solo in quella classe specifica la dichiaro nel file .h della classe e la utilizzo tranquillamente, se invece mi serve su piu moduli la dichiaro nel file .ino
e con extern la dichiaro anche nelle classi che mi serve
quindi se io uso
extern NexText txtTemp;
extern uint8_t currentpage;
extern uint8_t previouspage;
extern String pwd[NUM_PWD][2];
extern char buffer[100];
extern String fileconfig[NUM_CONFIG][2];
fin qui va tutto bene e le variabili dichiarate come extern nella classe vengono viste ed aggiornate senza nessun problema.
Quello che non riesco è la dichiarazione del prototipo nel file .h o .cpp della struttura
questo è quanto dichiarato nel file .ino
struct list_config{
uint32_t noAdr; //Defnisce i pin da leggere se non disabilitati
uint8_t modeAllarm; //0=Completo 1=Solo contatti 2= solo sensori
uint8_t timeallarm; //tempo che rimane attiva la sirena in allarme espresso in minuti
float temp_Normale; //Valore della temperatura di funzionamento in modalita normale
float temp_Euro; //Valore della temperatura di funzionamento in modalita risparmio
float temp_Notturna; //Valore della temperatura notturna
float temp_Antigelo; //Valore temperatura antigelo
float temp_Diff; //Valore differenziale termico
uint8_t program; //0=programma Giornaliero 1=programma Settimanale 2=Programma venerdi/sabato
uint8_t modalita; //0=inverno 1=estate
};
list_config config;
ho provato a dichiarare la struttura in oggetto in qualsiasi modo ma il compilatore mi da sempre errore e non so come fargliela vedere alla classe esterna.
//modi in cui ho cercato di dichiarare il prototipo
extern struct list_config config;
extern list_config config;
extern struct config;
ovviamente una sola dichiarazione per volta ma nella prima dichiarazione mi da questo errore
Display.h:19: note forward declaration of struct list_config
extern struct list_config config
nella seconda
Display.h: 19:8: error: 'list_config' does not name a type
extern list_config config
e nella terza
Display.h: 19:15: error: a storage class can only be specified for objects and functions
extern struct config
Non ditemi di passarla come puntatore perche sarebbe del tutto inutile, perche la classe in oggetto ha tutte funzioni che lavorano con il metodo dell'evento il quale viene generato da un display nextion e per tale motivo non posso dire al display quando genera l'evento touch press o touch release di infilare anche il puntatore alla struttura.
Chi mi aiuta a capire dove sbaglio nella dichiarazione del prototipo. Grazie a tutti