是否有可能 "Turn off" 或 "Turn on" C 变量的波动性?
Is it possible to "Turn off" or "Turn on" volatility in C variables?
我在 C 中有两个静态可变变量,我想在逻辑语句中检查它们。但是,当我这样做时,我收到警告“未定义的行为:此语句 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
属性。
您需要为每个创建一个 non-volatile 副本,然后对其进行操作。
unsigned char a_stable = a;
unsigned char b_stable = b;
if((addr_bit & (a_stable | b_stable)) == 0){
...
要避免出现警告,您可以分解 C 语句,这样每个 C 语句只包含对易失性变量的一次访问。
我在 C 中有两个静态可变变量,我想在逻辑语句中检查它们。但是,当我这样做时,我收到警告“未定义的行为:此语句 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
属性。
您需要为每个创建一个 non-volatile 副本,然后对其进行操作。
unsigned char a_stable = a;
unsigned char b_stable = b;
if((addr_bit & (a_stable | b_stable)) == 0){
...
要避免出现警告,您可以分解 C 语句,这样每个 C 语句只包含对易失性变量的一次访问。