C тилинде статикалык жана туруксузду чогуу колдоно алабызбы?
C тилинде статикалык жана туруксузду чогуу колдоно алабызбы?

Video: C тилинде статикалык жана туруксузду чогуу колдоно алабызбы?

Video: C тилинде статикалык жана туруксузду чогуу колдоно алабызбы?
Video: Godot 2D и 3D бесплатный открытый игровой движок / OpenGL / C++, C#, GD Native Object Pascal / 2021 2024, Апрель
Anonim

Статикалык өзгөрмөлөр функция чалууларынын ортосунда өз маанисин сактап калат. Учуучу өзгөрмөлөр (бул карама-каршы эмес статикалык ) болуп саналат колдонулган өзгөрмө болгондо колдонулган ISR (кызматты үзгүлтүккө учуратуу тартиби) ичинде да, анын сыртында да. Учуучу компиляторду CPU регистринде кэштөөнүн ордуна ар дайым оперативдик эстутумдан жүктөөсүн айтат.

Ошо сыяктуу эле, биз статикалык жана туруксуз колдоно алабызбы?

Болсо да сен кирүү а статикалык бир нече жип аркылуу баалоо, ар бир жип болот анын жергиликтүү кэш көчүрмөсү бар! Мунун алдын алуу үчүн сенин колуңдан келет өзгөрмө катары жарыялоо статикалык туруксуз жана бул болот жипти глобалдык мааниге ээ болгон сайын окууга мажбурлоо. Бирок, туруксуз туура синхрондоштурууну алмаштыра албайт!

Ошо сыяктуу эле, эмне үчүн биз C тилинде учуучу колдонобуз? C туруксуз ачкыч сөз - бул жарыяланганда өзгөрмөгө колдонулуучу квалификатор. Ал компиляторго өзгөрмөнүн мааниси каалаган убакта өзгөрүшү мүмкүн экенин айтат - компилятор жакын жерден тапкан код менен эч кандай аракет кылбастан. Мунун кесепеттери абдан олуттуу.

Муну эске алганда, Cде статикалык туруксуздук эмнени билдирет?

статикалык өзгөрмөнүн чөйрөсүн билдирет. Эгерде өзгөрмө глобалдуу болсо, анда ал жарыяланган булак файлы менен чектелет дегенди билдирет. Эгерде өзгөрмө иштөө үчүн жергиликтүү болсо, анда бул өзгөрмө кармоо үчүн колдонулган эс тутум колдонмонун статикалык түрдө бөлүнгөн эс тутумунда экенин билдирет.

C тилиндеги volatile менен const колдоно алабызбы?

Ооба. өзгөрмө болот экөө тең деп жарыяланышы керек туруксуз жана туруктуу ичинде C . Конст модификатор өзгөрмөнүн маанисин ички программа менен өзгөртүүгө жол бербейт. Бирок, бул анын маанисин билдирбейт const өзгөрмө тышкы код менен өзгөртүлбөшү керек.

Сунушталууда: