una trabajar son sintaxis semánticas semantica section que para etiquetas etiqueta estructurales estructura elementos ejemplos c struct volatile

trabajar - Semántica de la estructura volátil



section html5 ejemplos (2)

En tu ejemplo, los dos son iguales. Pero los problemas giran en torno a los indicadores.

Primero apagado, volatile uint8_t *foo; le dice al compilador que la memoria apuntada es volátil. Si desea marcar el puntero como volátil, deberá hacer uint8_t * volatile foo;

Y ahí es donde se llega a las principales diferencias entre marcar la estructura como volátil y marcar campos individuales. Si tuvieras:

typedef struct { uint8_t *field; } foo; volatile foo f;

Eso actuaría así:

typedef struct { uint8_t * volatile field; } foo;

y no como:

typedef struct { volatile uint8_t *field; } foo;

¿Es suficiente declarar una instancia de una variable estructurada como volátil (si se accede a sus campos en el código de reentrantes), o debe uno declarar campos específicos de la estructura como volátiles?

Fraseada de manera diferente, ¿cuáles son las diferencias semánticas (si las 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 declarar una variable tipo puntero como volátil (por ejemplo, uint8_t * foo volátil) simplemente informa al compilador que la dirección apuntada por foo puede cambiar, sin hacer ninguna declaración sobre los valores apuntados por foo. No está claro si una analogía es válida para las variables estructuradas.


si declaras una estructura con volatilidad, todos sus miembros también serán volátiles