簡體   English   中英

是否可以“關閉”或“打開” C變量的波動性?

[英]Is it possible to “Turn off” or “Turn on” volatility in C variables?

我在C中有兩個靜態的volatile變量,我想在一個邏輯語句中檢查它們兩個。 但是,當我收到警告時,“未定義行為:此語句1037中未定義易失性訪問的順序”是否可以在很短的時間內暫停C變量的波動性以確保獲得良好的數據?

這是代碼:

static volatile unsigned char b;
static volatile unsigned char a;

//update the states of the two volatile variables 
update_vars( &a);
update_vars( &b);

// check them in a logical statement
// Can I suspend the volatile lable??  
if((addr_bit & (a | b)) == 0){
// update another variables
}
else{
// another action
}

我在相同的中斷環境中考慮此問題,但是如果希望在准確的時刻對數據進行穩定的評估,則可以暫時將其掛起。 謝謝!

不能禁用變量的volatile屬性。

您需要創建每個的非易失性副本,然后對其進行操作。

unsigned char a_stable = a;
unsigned char b_stable = b;

if((addr_bit & (a_stable | b_stable)) == 0){
    ...

為了避免警告,您可以分解C語句,以使每個C語句僅具有對volatile變量的一次訪問。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM