Putem folosi static și volatil împreună în C?
Putem folosi static și volatil împreună în C?

Video: Putem folosi static și volatil împreună în C?

Video: Putem folosi static și volatil împreună în C?
Video: Prof. C-tin Dulcan: Vindecarea prin Cuvânt și Medicina Sufletului (împreună cu Titiana Popa) 2024, Aprilie
Anonim

Static variabilele își păstrează valoarea între apelurile de funcție. Volatil variabile (care nu este opusul static ) sunt folosit când o variabilă este folosit atât în cadrul unui ISR (rutină de întrerupere a serviciului), cât și în afara acesteia. Volatil spune compilatorului să încarce întotdeauna avariable din RAM, mai degrabă decât să-l memoreze într-un CPUregister.

În mod similar, cineva se poate întreba, putem folosi static și volatil împreună?

Chiar dacă tu acces a static valoare prin mai multe fire, fiecare fir poate sa au copia locală în cache! Pentru a evita acest lucru poti declara variabila ca static volatil și asta voi forțați firul să fie citit de fiecare dată când valoarea globală. In orice caz, volatil nu este un substitut pentru sincronizarea corectă!

În mod similar, de ce folosim volatile în C? C este volatil cuvântul cheie este un calificator care se aplică unei variabile atunci când este declarată. Îi spune compilatorului că valoarea variabilei se poate schimba în orice moment - fără ca codul pe care compilatorul îl găsește în apropiere să ia nicio acțiune. Implicațiile acestui lucru sunt destul de grave.

Având în vedere acest lucru, ce înseamnă volatil static în C?

static se referă la domeniul de aplicare al variabilei. Dacă variabila este globală, înseamnă că domeniul de aplicare este limitat la fișierul sursă în care a fost declarată. Dacă variabila este locală pentru o funcție, atunci înseamnă că memoria folosită pentru a păstra această variabilă se află în memoria alocată static a aplicației.

Putem folosi const cu volatil în C?

Da. O variabilă poate sa fi declarat ca ambele volatil și constant în C . Const modificatorul nu permite modificarea valorii variabilei prin programul intern. Dar, nu înseamnă acea valoare a const variabila nu trebuie modificată de cod extern.

Recomandat: