Možemo li zajedno koristiti static i volatile u C?
Možemo li zajedno koristiti static i volatile u C?

Video: Možemo li zajedno koristiti static i volatile u C?

Video: Možemo li zajedno koristiti static i volatile u C?
Video: ZAŠTO ČEKAM L4D3 2024, Decembar
Anonim

Statički varijable zadržavaju svoju vrijednost između poziva funkcija. Nestabilan varijabli (što nije suprotno od statički ) su korišteno kada je varijabla korišteno kako unutar ISR-a (rutina prekida usluge) tako i izvan njega. Nestabilan govori kompajleru da uvijek učitava varijablu iz RAM-a umjesto da je kešira u CPUregister.

Slično se može zapitati, možemo li zajedno koristiti statički i volatile?

Čak iako ti pristup a statički vrijednost kroz više niti, svaka nit mogu imati svoju lokalnu keširanu kopiju! Da bi se ovo izbeglo možeš deklarisati varijablu kao statički hlapljiv i to će prisili nit da čita svaki put globalnu vrijednost. Kako god, volatile nije zamjena za ispravnu sinhronizaciju!

Slično tome, zašto koristimo volatile u C? C je nestalan ključna riječ je kvalifikator koji se primjenjuje na varijablu kada je deklarirana. To govori kompajleru da se vrijednost varijable može promijeniti u bilo koje vrijeme - bez preduzimanja bilo kakve radnje od strane koda koji prevodilac pronađe u blizini. Posledice ovoga su prilično ozbiljne.

S obzirom na ovo, šta znači statički volatile u C?

statički odnosi se na opseg varijable. Ako je varijabla globalna, to znači da je opseg ograničen na izvornu datoteku u kojoj je deklarirana. Ako je varijabla lokalna za funkciju, onda to znači da je memorija koja se koristi za držanje ove varijable u statički dodijeljenoj memoriji aplikacije.

Možemo li koristiti const sa volatile u C?

Da. Varijabla mogu biti deklarisani kao oboje volatile i konstantan in C . Konst modifikator ne dozvoljava promjenu vrijednosti varijable internim programom. Ali, to ne znači tu vrijednost konst varijabla se ne bi trebala mijenjati vanjskim kodom.

Preporučuje se: