相关疑难解决方法(0)

为什么C需要挥发性?

为什么volatileC需要?它是干什么用的?它会做什么?

c declaration volatile

396
推荐指数
15
解决办法
27万
查看次数

为什么我们在C++中使用volatile关键字?

可能重复:
C++:什么时候有挥发性关键字帮你?

我从来没有用过它,但我想知道为什么人们会用它?它到底是做什么的?我搜索了论坛,发现它只是C#或Java主题.

c++ volatile compiler-optimization

347
推荐指数
2
解决办法
25万
查看次数

为什么存在易变?

什么是volatile关键词呢?在C++中它解决了什么问题?

就我而言,我从来没有故意需要它.

c++ volatile c++-faq

206
推荐指数
11
解决办法
4万
查看次数

我怎么知道gcc是否同意某些东西是不稳定的?

考虑以下:

volatile uint32_t i;
Run Code Online (Sandbox Code Playgroud)

我如何知道gcc是否确实将我视为易变?它会被声明为因为没有附近的代码会修改它,并且修改它可能是由于某些中断.

我不是世界上最差的汇编程序员,但我在电视上播放一个.有人可以帮我理解它会有什么不同吗?

如果你采取以下愚蠢的代码:

#include <stdio.h>
#include <inttypes.h>

volatile uint32_t i;

int main(void)
{
        if (i == 64738)
                return 0;
        else
                return 1;
}
Run Code Online (Sandbox Code Playgroud)

将其编译为对象格式并通过objdump反汇编,然后在删除'volatile'后执行相同操作,没有区别(根据diff).volatile声明是否太接近于其检查或修改的位置,或者我在声明易失性时应该总是使用某种原子类型?一些优化标志会影响这个吗?

请注意,我的愚蠢样本并不完全符合我的问题,我意识到这一点.我只是试图找出gcc是否确实将变量视为易失性,所以我正在研究小型转储以试图找到差异.

c assembly gcc volatile

8
推荐指数
4
解决办法
4025
查看次数

自C++ 11以来,并发编程中volatile的有用性

我读过这个这个答案.我还搜索了C++ Concurrency in Action一书,但没有找到任何关于volatile使用它的例子的讨论.看起来它根本不是为并发而设计的.那么对于并发编程,只使用原子,互斥等就足够了,忘了volatile吗?volatile并发问题可能需要的任何情况?

c++ concurrency volatile c++11

4
推荐指数
1
解决办法
268
查看次数