Linux环境下C和Cpp的易失性

5 c linux arm volatile embedded-linux

我正在为Linux环境编写ARM程序.它不是一个低级别的程序,比如app级别

你能澄清我之间有什么区别,

int iData;
Run Code Online (Sandbox Code Playgroud)

VS

volatile int iData;
Run Code Online (Sandbox Code Playgroud)

它是否具有硬件特定的影响?

Jai*_*dra -1

C 语言中 volatile 的出现就是为了不自动缓存变量的值。它会告诉机器不要缓存这个变量的值。因此,每次遇到给定的易失性变量时,它都会从主内存中获取该变量的值。使用此机制是因为操作系统或任何中断都可以随时修改该值。因此,使用 volatile 将帮助我们每次都重新访问该值。

阅读Wiki页面以获取更多说明

  • 抱歉,但那是错误的,易失性不会阻止机器缓存任何内容。它可以防止编译器将变量保留在寄存器中。概括地说,它禁用了 CSE 和该变量的其他一些优化。 (2认同)