如果一个结构体类型的变量实例被声明为volatile(如果其字段在可重入代码中被访问),这是否足够,或者必须声明特定字段为volatile?
换句话说,以下两种方式之间有什么语义差异(如果有):
typdef struct {
uint8_t bar;
} foo_t;
volatile foo_t foo_inst;
并且typedef struct{
volatile uint8_t bar;
} foo_t;
foo_t foo_inst;
我认识到将指针类型的变量声明为volatile(例如,volatile uint8_t * foo)仅仅是告诉编译器指向 foo 的地址可能会发生改变,而不对 foo 指向的值做出任何陈述。我不清楚是否也适用于结构类型的变量。