Бид C хэл дээр статик болон тогтворгүй байдлыг хамтад нь ашиглаж болох уу?
Бид C хэл дээр статик болон тогтворгүй байдлыг хамтад нь ашиглаж болох уу?

Видео: Бид C хэл дээр статик болон тогтворгүй байдлыг хамтад нь ашиглаж болох уу?

Видео: Бид C хэл дээр статик болон тогтворгүй байдлыг хамтад нь ашиглаж болох уу?
Видео: SCP-1730 Что случилось с сайта-13? 2024, Арванхоёрдугаар сар
Anonim

Статик хувьсагч нь функцийн дуудлагын хооронд өөрийн утгыг хадгалдаг. Дэгдэмхий хувьсагч (энэ нь эсрэг биш статик ) байна ашигласан хувьсагч байх үед ашигласан ISR (үйлчилгээний тасалдал) дотор болон түүний гадна аль алинд нь. Дэгдэмхий хөрвүүлэгчид хувьсагчийг CPU-ийн бүртгэлд кэшлэхийн оронд RAM-аас үргэлж ачаалахыг хэлдэг.

Үүнтэй адилаар бид статик болон тогтворгүй байдлыг хамтад нь ашиглаж болох уу?

Хэдийгээр Та нэвтрэх а статик олон урсгалаар дамжуулан утгыг, хэлхээ бүр чадна өөрийн орон нутгийн кэш хуулбартай байна! Үүнээс зайлсхийхийн тулд чи чадна хувьсагчийг гэж зарлана статик тогтворгүй бөгөөд энэ нь болно Глобал утгыг унших бүрт утсыг хүчээр шахах. Гэсэн хэдий ч, тогтворгүй зөв синхрончлолыг орлохгүй!

Үүнтэй адилаар бид яагаад C хэлэнд дэгдэмхий бодис хэрэглэдэг вэ? C нь тогтворгүй Түлхүүр үг нь хувьсагчийг зарлах үед түүнд хэрэглэгдэх шалгуур үзүүлэлт юм. Энэ нь хөрвүүлэгчийн ойролцоох олсон кодоор ямар ч үйлдэл хийхгүйгээр хувьсагчийн утга ямар ч үед өөрчлөгдөж болохыг хөрвүүлэгчид хэлдэг. Үүний үр дагавар нь нэлээд ноцтой юм.

Үүнийг авч үзвэл C хэл дээр статик дэгдэмхий гэдэг нь юу гэсэн үг вэ?

статик хувьсагчийн хамрах хүрээг илэрхийлнэ. Хэрэв хувьсагч глобал бол энэ нь хамрах хүрээ нь зарласан эх файлаар хязгаарлагдана гэсэн үг. Хэрэв хувьсагч нь ажиллахад локал бол энэ хувьсагчийг хадгалахад ашигласан санах ой нь програмын статик байдлаар хуваарилагдсан санах ойд байна гэсэн үг юм.

Бид C хэлэнд volatile-тай const-г ашиглаж болох уу?

Тиймээ. Хувьсагч чадна аль аль нь гэж зарлана тогтворгүй болон тогтмол in C . Const Өөрчлөгч нь хувьсагчийн утгыг дотоод програмаар өөрчлөхийг зөвшөөрдөггүй. Гэхдээ энэ нь үнэ цэнэтэй гэсэн үг биш юм const хувьсагчийг гадаад кодоор өөрчлөх ёсгүй.

Зөвлөмж болгож буй: