pax*_*blo 33
与非struct字段完全相同:
#include <stdio.h>
int main (int c, char *v[]) {
struct _a {
int a1;
volatile int a2;
int a3;
} a;
a.a1 = 1;
a.a2 = 2;
a.a3 = 3;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
您可以struct使用"volatile struct _a {...}"上面的方法将整个标记为易失性.
小智 7
我需要澄清 C/C++ 的 volatile 因为这里有一个错误的答案。自 1994 年以来,我一直在为微控制器编程,这个关键字非常有用并且经常需要。
volatile 永远不会破坏你的代码,使用它永远不会有风险。该关键字将基本上确保该变量未被编译器优化。如果你过度使用这个关键字,最糟糕的情况是你的程序会变得更大更慢。
这是当您需要为变量使用此关键字时: - 您有一个写入中断函数内部的变量。AND - 这个相同的变量被读取或写入外部中断函数。或 如果您有 2 个使用变量的不同优先级的中断函数,那么您也应该使用 'volatile'。
否则,不需要关键字。
至于硬件寄存器,如果您不在程序中做奇怪的事情,即使没有关键字,它们也应该被视为易失性。