相关疑难解决方法(0)

为什么volatile适用于setjmp/longjmp

在调用longjmp()之后,如果自调用setjmp()以来它们的值可能已更改,则不应访问非易失性限定的本地对象.在这种情况下,它们的值被认为是不确定的,访问它们是未定义的行为.

现在我的问题是为什么在这种情况下挥发性工作?不会改变那个volatile变量仍然无法使用longjmp吗?例如,longjmp在下面给出的示例中将如何正常工作?当代码在longjmp之后返回setjmp时,local_var的值不是2而不是1吗?

void some_function()
{
  volatile int local_var = 1;

  setjmp( buf );
  local_var = 2;
  longjmp( buf, 1 );
}
Run Code Online (Sandbox Code Playgroud)

c linux x86 gcc setjmp

20
推荐指数
3
解决办法
3497
查看次数

标签 统计

c ×1

gcc ×1

linux ×1

setjmp ×1

x86 ×1