将结构类型变量的实例声明为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指向的值。对我来说还不清楚结构类型变量是否适用类推。
uint8_t field[10]
,则在将结构标记为volatile时,是将基础数据标记为volatile还是指向该字段的“有效”指针标记为volatile?