我正在编写的一些低级代码存在问题,我需要将对象用作易失性对象,但这并不一定是我希望将类型声明为易失性(出于可重用性原因)。但是,我可以定义指向结构的合格变体的指针,如以下部分所述。
struct x {
int bar;
};
struct x foobar;
...
volatile struct x *foo = &foobar;
现在 foo 实际上是一个指向该类型对象的指针:
volatile struct x {
volatile int x;
};
因为 volatile 适用于所有结构成员。现在我的问题是当一个对象包含指向另一个对象的指针时,如何应用易失性?
struct x {
struct y *bar;
};
将指向 x 的 volatile 实例的指针然后将其视为:
volatile struct x {
struct y * volatile bar;
};
或作为:
volatile struct x {
volatile struct y * volatile bar;
};
我通读了 C 标准,对此不是很清楚,我可以很容易地以多种方式解释措辞。