【发布时间】:2010-11-02 03:39:56
【问题描述】:
我在编写一些低级代码时遇到问题,我需要将对象用作易失性对象,但这并不一定是我希望将类型声明为易失性(出于可重用性原因)。但是,我可以定义指向结构的合格变体的指针,如下节所述。
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 标准,对此不是很清楚,我可以很容易地从多种方式解释措辞。
【问题讨论】: