1

使用组合的变量说明符有什么区别static volatile?或单独使用一个;喜欢static还是volatile在微控制器编程中?

4

3 回答 3

10

static - 在这种情况下,使变量仅在当前文件中可见

volatile - 它是编译器可以通过正常执行路径之外的东西(例如,中断例程)更改对象的信息,并保证变量将在任何使用之前读取并在每次更改之后写入。 volatile(这是一个非常常见的误解)不保证其他任何东西 - 没有原子性,没有缓存一致性等。

于 2017-09-02T08:57:28.437 回答
1

对于关键字staticvolatile有写够了...

参见例如:

在关注TWI接口时,volatile需要,因为可以从不同的中断服务处理程序调用修改这些变量的函数。如果volatile将被删除,编译器将优化代码,不知道代码可以被中断。这可能会导致失败。

于 2017-09-02T04:46:58.693 回答
0

静态

静态变量是指在所有实例之间共享的类变量。

易挥发的:

易失性变量是那些被读取和写入主存储器的变量。它们不存储在本地缓存中,并且总是从主内存中获取。

例如,两个线程使用private volatile int x;. 如果线程 A 写入(x)和线程 B 读取(x),那么它会从主内存写入和读取,而不使用线程的本地缓存。

静态易失:

即使静态变量是共享变量,但是在不同的线程中,一个线程的本地缓存中的静态变量可以有不同的值。要使其对所有线程保持一致,只需将其声明为static volatile. 所以每次它都会从主内存中获取。

于 2020-01-16T08:02:28.900 回答