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?definition
als flüchtig markiert werden? Oder muss das nur bei den Variablen typedef oder instance bleiben?Wenn Sie eine Struktur mit flüchtig deklarieren, sind auch alle ihre Mitglieder flüchtig
quelle