【发布时间】:2019-02-06 23:22:57
【问题描述】:
我正在尝试制作一个最小的工作示例来显示何时需要volatile。但以下示例不需要volatile。有人可以举个例子吗?谢谢。
#include <stdio.h>
#include <setjmp.h>
static jmp_buf buf;
int main() {
volatile int local_var = 1;
int local_var2 = 10;
if(!setjmp(buf)) {
local_var = 2;
local_var2 = 20;
longjmp(buf, 1);
} else {
printf("%d\n", local_var);
printf("%d\n", local_var2);
}
return 0;
}
$ ./main.exe
2
20
【问题讨论】:
-
您通常不能通过运行示例程序来表明需要
volatile。它是必需的,因为标准是这样说的。