¿Es suficiente declarar una instancia de una variable estructurada como volátil (si se accede a sus campos en el código entrante), o debe declarar campos específicos de la estructura como volátiles?Semántica de Estructuras Volátiles
redactadas de manera diferente, ¿cuáles son las diferencias semánticas (si los hay) entre:
typdef struct {
uint8_t bar;
} foo_t;
volatile foo_t foo_inst;
y
typedef struct{
volatile uint8_t bar;
} foo_t;
foo_t foo_inst;
Reconozco que se declara una variable de puntero-tecleado tan volátil (por ejemplo uint8_t volátil * foo) simplemente informa al compilador que la dirección apuntada por foo puede cambiar, sin hacer ninguna declaración acerca de los valores apuntados por foo. No está claro si una analogía es válida para las variables estructuradas.
Si el campo era un 'uint8_t campo [10]', cuando marca la estructura como volátil, los datos subyacentes se marcan como volátiles o el "efecto tivo "puntero al campo marcado como volátil? –
Los datos subyacentes son volátiles. Una cosa en que pensar es que el puntero "efectivo" no es modificable (siempre es la dirección del primer elemento), por lo que volátil no tendría ningún significado en relación con ello. –