9
การใช้สารระเหยในการพัฒนา C แบบฝัง
ฉันได้อ่านบทความและคำตอบของการแลกเปลี่ยนกองซ้อนเกี่ยวกับการใช้volatileคำสำคัญเพื่อป้องกันไม่ให้คอมไพเลอร์จากการใช้การเพิ่มประสิทธิภาพใด ๆ บนวัตถุที่สามารถเปลี่ยนแปลงในวิธีที่ไม่สามารถกำหนดโดยคอมไพเลอร์ หากฉันกำลังอ่านจาก ADC (เรียกว่าตัวแปรadcValue) และฉันประกาศว่าตัวแปรนี้เป็นโกลบอลฉันควรใช้คำหลักvolatileในกรณีนี้หรือไม่? โดยไม่ต้องใช้volatileคำสำคัญ // Includes #include "adcDriver.h" // Global variables uint16_t adcValue; // Some code void readFromADC(void) { adcValue = readADC(); } การใช้volatileคำสำคัญ // Includes #include "adcDriver.h" // Global variables volatile uint16_t adcValue; // Some code void readFromADC(void) { adcValue = readADC(); } ฉันถามคำถามนี้เพราะเมื่อทำการดีบั๊กฉันไม่เห็นความแตกต่างระหว่างทั้งสองวิธีแม้ว่าแนวทางปฏิบัติที่ดีที่สุดจะบอกว่าในกรณีของฉัน (ตัวแปรทั่วโลกที่เปลี่ยนแปลงโดยตรงจากฮาร์ดแวร์) …