เราสามารถใช้ static และ volatile ร่วมกันใน C ได้หรือไม่?
เราสามารถใช้ static และ volatile ร่วมกันใน C ได้หรือไม่?

วีดีโอ: เราสามารถใช้ static และ volatile ร่วมกันใน C ได้หรือไม่?

วีดีโอ: เราสามารถใช้ static และ volatile ร่วมกันใน C ได้หรือไม่?
วีดีโอ: Can We Use Volatile and Const Together | Embedded C FAQ Interview Questions 2024, ธันวาคม
Anonim

คงที่ ตัวแปรคงค่าไว้ระหว่างการเรียกใช้ฟังก์ชัน ระเหย ตัวแปร (ซึ่งไม่ตรงข้ามกับ คงที่ ) เป็น ใช้แล้ว เมื่อตัวแปร is ใช้แล้ว ทั้งภายใน ISR (รูทีนบริการขัดจังหวะ) และภายนอก ระเหย บอกให้คอมไพเลอร์โหลด avariable จาก RAM เสมอ แทนที่จะแคชใน CPUregister

อาจมีคนถามว่า เราสามารถใช้ static และ volatile ร่วมกันได้หรือไม่?

แม้ว่า คุณ เข้าถึง คงที่ ค่าผ่านหลายเธรด แต่ละเธรด สามารถ มี cachedcopy ในเครื่อง! เพื่อหลีกเลี่ยงสิ่งนี้ คุณสามารถ ประกาศตัวแปรเป็น ระเหยคงที่ และนี่ จะ บังคับให้เธรดอ่านทุกครั้งที่มีค่าโกลบอล อย่างไรก็ตาม, ระเหย ไม่ได้ใช้แทนการซิงโครไนซ์ที่เหมาะสม!

ในทำนองเดียวกันทำไมเราใช้สารระเหยใน C? ความผันผวนของ C คีย์เวิร์ดเป็นตัวระบุที่ใช้กับตัวแปรเมื่อมีการประกาศ มันบอกคอมไพเลอร์ว่าค่าของตัวแปรอาจเปลี่ยนแปลงได้ตลอดเวลา โดยไม่ต้องดำเนินการใดๆ โดยโค้ดที่คอมไพเลอร์พบในบริเวณใกล้เคียง ความหมายของสิ่งนี้ค่อนข้างร้ายแรง

เมื่อพิจารณาถึงสิ่งนี้ ค่าคงที่คงที่ในภาษา C หมายความว่าอย่างไร

คงที่ หมายถึงขอบเขตของตัวแปร หากตัวแปรเป็นแบบโกลบอล หมายความว่าขอบเขตจำกัดอยู่ที่ไฟล์ต้นทางที่มีการประกาศ หากตัวแปรเป็นแบบโลคัลสำหรับฟังก์ชัน แสดงว่าหน่วยความจำที่ใช้เก็บตัวแปรนี้อยู่ในหน่วยความจำที่จัดสรรแบบสแตติกของแอปพลิเคชัน

เราสามารถใช้ const กับ volatile ใน C ได้หรือไม่?

ใช่. ตัวแปร สามารถ ประกาศเป็นทั้งสองอย่าง ระเหย และ คงที่ ใน ค . คอนสต ตัวดัดแปลงไม่อนุญาตให้เปลี่ยนค่าของตัวแปรโดยโปรแกรมภายใน แต่ไม่ได้หมายความว่าค่าของ const ไม่ควรเปลี่ยนตัวแปรด้วยรหัสภายนอก

แนะนำ: