我在我的嵌入式固件中使用了很多volatile
變量,但大多數情況下,在函數中只有一個點需要確定該值是最近的值(在開始時)。但函數的其餘部分引用了相同的變量名稱,並且可以同時更改該值,從而產生非常意外的代碼流/結果。我知道這可以通過在函數內部使用臨時變量來解決,但我正在尋找更好的解決方案。替代波動嗎?
現在我想知道,不是將整個變量標記爲volatile
,有沒有一種方法可以指示編譯器(gcc)使用一個特殊的關鍵字,我想讀取變量,就像它標記爲volatile一樣,所以我在函數的開頭只能使用該關鍵字一次?
解決方案以何種方式比使用臨時變量更好?這似乎是一個明顯的完美解決方案。 –
@DavidSchwartz我必須修改每個使用這些volatile變量的函數,以便在函數開始時「緩存」它,並確保所有代碼都是指臨時變量而不是真實變量。如果我可以完全刪除'volatile'關鍵字,那麼我所要做的就是找到實際需要進行易失性讀取的位置,而不是相反。 – Muis
單獨進行訪問。更改易失性變量的名稱。 –