Podem utilitzar estàtica i volàtil junts a C?
Podem utilitzar estàtica i volàtil junts a C?

Vídeo: Podem utilitzar estàtica i volàtil junts a C?

Vídeo: Podem utilitzar estàtica i volàtil junts a C?
Vídeo: ПОЧЕМУ Я ЖДУ L4D3 2024, Març
Anonim

Estàtica les variables conserven el seu valor entre les crides de funció. Volàtil variables (que no és el contrari de estàtica ) són utilitzat quan una variable és utilitzat tant dins d'un ISR (rutina de servei d'interrupció) com fora d'aquest. Volàtil diu al compilador que carregui sempre una variable des de la memòria RAM en lloc d'emmagatzemar-la a la memòria cau en un registre de CPU.

De la mateixa manera, es pot preguntar, podem utilitzar conjuntament l'estàtica i la volàtil?

Encara que vostè accedir a estàtica valor a través de diversos fils, cada fil llauna té la seva còpia local en memòria cau! Per evitar això tu pots declara la variable com a estàtica volàtil i això voluntat forçar el fil a llegir cada vegada que el valor global. Malgrat això, volàtil no és un substitut de la sincronització adequada!

De la mateixa manera, per què utilitzem volàtils a C? C és volàtil La paraula clau és un qualificador que s'aplica a una variable quan es declara. Indica al compilador que el valor de la variable pot canviar en qualsevol moment, sense que el codi que el compilador trobi a prop faci cap acció. Les implicacions d'això són força greus.

Tenint en compte això, què significa volàtil estàtic a C?

estàtica fa referència a l'abast de la variable. Si la variable és global, vol dir que l'abast està limitat al fitxer font on es va declarar. Si la variable és local a una funció, vol dir que la memòria utilitzada per contenir aquesta variable es troba a la memòria assignada estàticament de l'aplicació.

Podem utilitzar const amb volàtil a C?

Sí. Una variable llauna ser declarats com tots dos volàtil i constant en C . Const modificador no permet canviar el valor de la variable per un programa intern. Però, no vol dir aquest valor de const La variable no s'ha de canviar per codi extern.

Recomanat: