Ciao a tutti,
ho una curiosità tecnica:
se io dichiaro una variabile solamente con
int VARIABILE_A = 43;
questa viene considerata volatile o statica?
vi ringrazio in anticipo
Ciao a tutti,
ho una curiosità tecnica:
se io dichiaro una variabile solamente con
int VARIABILE_A = 43;
questa viene considerata volatile o statica?
vi ringrazio in anticipo
Nessuna delle due
Se è necessario che sia volatile o static, devi esplicitarlo.
static int VARIABILE_A = 43; // si comporta come una variabile globale, ma con lo scope locale dove viene dichiarata
volatile int ARIABILE_A = 43; // la keyword volatile comunica al compilatore che questa variabile deve essere trattata con attenzione (in pratica non vengono eseguite ottimizzazioni del codice). Ad esempio perché può accadere che venga scritta in più punti del firmware in mod poco controllabile come accade talvolta nelle funzioni associate ad interrupt.
A parte il fatto che le variabili dovrebbero essere scritte in minuscolo, sono due tipi diversi di qualificatore:
Non sarebbe meglio definirla una variabile locale ma persistente? D'altra parte, fuori è invisibile...
Ma infatti è una variabile locale.
Io ho scritto che si comporta come una globale non solo per il fatto che il valore viene salvato in modo persistente tra una chiamata e l'altra della funzione, ma perché viene trattata dal compilatore come se fosse globale (scope a parte ovviamente). Ad esempio viene allocata nello stesso spazio di memoria delle variabili globali.
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.