Můžeme použít statické a volatilní společně v C?
Můžeme použít statické a volatilní společně v C?

Video: Můžeme použít statické a volatilní společně v C?

Video: Můžeme použít statické a volatilní společně v C?
Video: The Embedded Way - The volatile keyword in C 2024, Duben
Anonim

Statický proměnné si zachovávají svou hodnotu mezi voláními funkcí. Nestálý proměnné (což není opak statický ) jsou použitý když je proměnná použitý jak v rámci ISR (rutina služby přerušení), tak mimo něj. Nestálý říká kompilátoru, aby vždy načítal proměnnou z paměti RAM, místo aby ji ukládal do mezipaměti v registru CPU.

Podobně se lze ptát, můžeme použít statické a těkavé dohromady?

I kdyby vy přístup a statický hodnota přes více vláken, každé vlákno umět mít svou místní kopii mezipaměti! Aby se tomu zabránilo můžeš deklarovat proměnnou jako statické těkavé a tohle vůle vynutit, aby vlákno četlo pokaždé globální hodnotu. Nicméně, nestálý nenahrazuje správnou synchronizaci!

Podobně, proč používáme těkavé v C? C je volatilní klíčové slovo je kvalifikátor, který je aplikován na proměnnou, když je deklarována. Říká kompilátoru, že hodnota proměnné se může kdykoli změnit - aniž by kód, který kompilátor nalezl poblíž, provedl jakoukoli akci. Důsledky toho jsou docela vážné.

Vzhledem k tomu, co znamená statický volatilní v C?

statický odkazuje na rozsah proměnné. Je-li proměnná globální, znamená to, že rozsah je omezen na zdrojový soubor, ve kterém byla deklarována. Pokud je proměnná lokální pro funkci, znamená to, že paměť použitá k uložení této proměnné je ve staticky alokované paměti aplikace.

Můžeme použít const s volatile v C?

Ano. Proměnná umět být deklarován jako obojí nestálý a konstantní v C . Const modifikátor neumožňuje změnu hodnoty proměnné interním programem. To však neznamená, že hodnota konst proměnná by neměla být měněna externím kódem.

Doporučuje: