Voimmeko käyttää staattista ja haihtuvaa yhdessä C:ssä?
Voimmeko käyttää staattista ja haihtuvaa yhdessä C:ssä?

Video: Voimmeko käyttää staattista ja haihtuvaa yhdessä C:ssä?

Video: Voimmeko käyttää staattista ja haihtuvaa yhdessä C:ssä?
Video: Väärinajattelija -podcast, jakso 17: Martta Jemina (Meditaatio, aivoaallot ja binauraaliset aallot) 2024, Joulukuu
Anonim

Staattinen muuttujat säilyttävät arvonsa funktiokutsujen välillä. Haihtuva muuttujat (mikä ei ole vastakohta staattinen ) ovat käytetty kun muuttuja on käytetty sekä ISR:n (interrupt service rutiinin) sisällä että sen ulkopuolella. Haihtuva käskee kääntäjää lataamaan muuttujan aina RAM-muistista sen sijaan, että se tallentaisi sen CPU-rekisteriin.

Samalla tavalla voidaan kysyä, voimmeko käyttää staattista ja haihtuvaa yhdessä?

Vaikka sinä pääsy a staattinen arvo useiden säikeiden kautta, jokainen säie voi on sen paikallinen välimuistikopio! Tämän välttämiseksi sinä pystyt ilmoittaa muuttuja muodossa staattinen haihtuva ja tämä tahtoa pakota lanka lukemaan joka kerta globaalin arvon. Kuitenkin, haihtuvia ei korvaa oikeaa synkronointia!

Samoin miksi käytämme haihtuvaa C:ssä? C on epävakaa avainsana on tarkenne, jota käytetään muuttujaan, kun se ilmoitetaan. Se kertoo kääntäjälle, että muuttujan arvo voi muuttua milloin tahansa - ilman, että kääntäjän läheltä löytämä koodi tekee mitään. Tämän seuraukset ovat varsin vakavat.

Kun tämä otetaan huomioon, mitä staattinen haihtuva tarkoittaa C:ssä?

staattinen viittaa muuttujan laajuuteen. Jos muuttuja on globaali, se tarkoittaa, että laajuus on rajoitettu siihen lähdetiedostoon, jossa se on ilmoitettu. Jos muuttuja on paikallinen funktiolle, se tarkoittaa, että tämän muuttujan säilyttämiseen käytetty muisti on sovelluksen staattisesti varatussa muistissa.

Voimmeko käyttää const kanssa volatile C:ssä?

Joo. Muuttuja voi julistetaan molemmiksi haihtuvia ja vakio sisään C . Const modifier ei salli muuttujan arvon muuttamista sisäisen ohjelman toimesta. Mutta se ei tarkoita sitä arvoa konst muuttujaa ei saa muuttaa ulkoisella koodilla.

Suositeltava: