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, Travanj
Anonim

Statički varijable zadržavaju svoju vrijednost između poziva funkcija. Nestabilan varijabli (što nije suprotno od statički ) su korišteni kada je varijabla korišteni kako unutar ISR-a (interrupt service rutine) tako i izvan njega. Nestabilan govori kompajleru da uvijek učita varijablu iz RAM-a umjesto da je sprema u CPUregister.

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

Čak i ako vas pristup a statički vrijednost kroz više niti, svaka nit limenka imati svoju lokalnu predmemoriju! Da bi se to izbjeglo možeš deklarirati varijablu kao statički hlapljiv i to htjeti prisili nit da čita svaki put globalnu vrijednost. Međutim, nestalan nije zamjena za ispravnu sinkronizaciju!

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

S obzirom na ovo, što 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, 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 s volatile u C?

Da. Varijabla limenka biti deklarirani kao oboje nestalan i konstantno u C . Konst modifikator ne dopušta promjenu vrijednosti varijable internim programom. Ali, to ne znači tu vrijednost konst varijabla se ne smije mijenjati vanjskim kodom.

Preporučeni: