Kan vi använda statisk och flyktig tillsammans i C?
Kan vi använda statisk och flyktig tillsammans i C?

Video: Kan vi använda statisk och flyktig tillsammans i C?

Video: Kan vi använda statisk och flyktig tillsammans i C?
Video: The Embedded Way - The volatile keyword in C 2024, Mars
Anonim

Statisk variabler behåller sitt värde mellan funktionsanrop. Flyktig variabler (vilket inte är motsatsen till statisk ) är Begagnade när en variabel är Begagnade både inom en ISR (avbrottsservicerutin) och utanför den. Flyktig talar om för kompilatorn att alltid ladda tillgängliga från RAM istället för att cacha det i ett CPUregister.

På samma sätt kan man fråga sig, kan vi använda statisk och flyktig tillsammans?

Även om du tillgång till a statisk värde genom flera trådar, varje tråd burk har sin lokala cachekopia! För att undvika detta du kan deklarera variabeln som statisk flyktig och detta kommer tvinga tråden att läsa varje gång det globala värdet. Dock, flyktig är inte en ersättning för korrekt synkronisering!

På samma sätt, varför använder vi volatile i C? C är flyktigt nyckelord är en kvalificerare som appliceras på en variabel när den deklareras. Det talar om för kompilatorn att värdet på variabeln kan ändras när som helst - utan att någon åtgärd vidtas av koden som kompilatorn hittar i närheten. Konsekvenserna av detta är ganska allvarliga.

Med tanke på detta, vad betyder statisk flyktig i C?

statisk avser variabelns omfattning. Om variabeln är global betyder det att omfattningen är begränsad till källfilen den deklarerades i. Om variabeln är lokal för en funktion betyder det att minnet som används för att hålla denna variabel finns i programmets statiskt allokerade minne.

Kan vi använda const med volatile i C?

Ja. En variabel burk förklaras som båda flyktig och konstant i C . Const modifieraren tillåter inte att ändra värdet på variabeln med internt program. Men det betyder inte att värdet av konst variabel bör inte ändras av extern kod.

Rekommenderad: