如何将结构体的特定成员声明为volatile?
如何将结构体的特定成员声明为volatile?
与非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;
}
您可以通过使用"volatile struct _a {...}"
将整个 struct
标记为易变,但上面的方法是针对单个字段的。根据这篇文章,应该很容易理解:
最后,如果您将 volatile 应用于结构体或联合体,则整个结构体/联合体的内容都是 volatile 的。如果您不希望出现这种情况,则可以将 volatile 限定符应用于结构体/联合体的各个成员。
直接访问 处理持续的 RAM 读写。
等效调用 处理可互换的方法流程。
除非编译器确切知道如何处理它,否则我在使用这个关键字方面并没有太好的运气。这是我的个人经验。但我对研究它如何直接影响跨平台编译(例如低级系统调用和后端数据库之间)很感兴趣。