Reicht es aus, eine Instanz einer strukturtypisierten Variablen als flüchtig zu deklarieren (wenn auf ihre Felder im neu eingegebenen Code zugegriffen wird), oder muss man bestimmte Felder der Struktur als flüchtig deklarieren?
Anders ausgedrückt, was sind die semantischen Unterschiede (falls vorhanden) zwischen:
typdef struct {
uint8_t bar;
} foo_t;
volatile foo_t foo_inst;
und
typedef struct{
volatile uint8_t bar;
} foo_t;
foo_t foo_inst;
Ich erkenne, dass das Deklarieren einer zeigertypisierten Variablen als flüchtig (z. B. flüchtig uint8_t * foo) den Compiler lediglich darüber informiert, dass sich die Adresse, auf die foo zeigt, ändern kann, während keine Aussage über die Werte gemacht wird, auf die foo zeigt. Es ist mir unklar, ob eine Analogie für strukturtypisierte Variablen gilt.
uint8_t field[10]
, wenn Sie die Struktur als flüchtig markieren, werden die zugrunde liegenden Daten als flüchtig markiert oder der "effektive" Zeiger auf das Feld als flüchtig markiert?