Достаточно ли объявлять экземпляр типизированной переменной как 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 uint8_t * foo) просто сообщает компилятору, что адрес, на который указывает foo, может измениться, не делая никаких утверждений о значениях, на которые указывает foo. Мне непонятно, существует ли аналогия для структурно-типизированных переменных.