首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C中的'static volatile‘vs. 'static’vs.‘volatile

C中的'static volatile‘vs. 'static’vs.‘volatile
EN

Stack Overflow用户
提问于 2017-09-02 12:19:53
回答 3查看 28.8K关注 0票数 1

组合使用变量说明符static volatile有什么区别?或者单独使用一个;就像微控制器编程中的staticvolatile

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-09-02 16:57:28

静态-在这种情况下,使变量仅在当前文件内可见

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

票数 9
EN

Stack Overflow用户

发布于 2017-09-02 12:46:59

对于关键字staticvolatile,已经写得足够多了。

例如,请参阅:

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

票数 1
EN

Stack Overflow用户

发布于 2020-01-16 16:02:29

静态

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

易失性:

易失性变量是那些读写到主存的变量。它们不存储在本地缓存中,总是从主存中获取。

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

静态易失性:

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46010403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档