E 'sufficiente dichiarare un'istanza di una variabile tipizzata dalla struttura come volatile (se i suoi campi sono accessibili nel codice del nuovo concorrente) o si deve dichiarare volatile un campo specifico della struttura?Semantica di Struct Volatile
formulata in modo diverso, quali sono le differenze semantiche (se presente) tra:
typdef struct {
uint8_t bar;
} foo_t;
volatile foo_t foo_inst;
e
typedef struct{
volatile uint8_t bar;
} foo_t;
foo_t foo_inst;
riconosco che dichiara una variabile puntatore tipizzato come volatile (es uint8_t volatili * foo) informa semplicemente il compilatore che l'indirizzo indicato da foo può cambiare, mentre non fa alcuna dichiarazione sui valori indicati da foo. Non mi è chiaro se un'analogia valga per le variabili tipizzate dalla struttura.
Se il campo fosse un 'uint8_t campo [10]', quando si contrassegna la struttura come volatile sono i dati sottostanti contrassegnati come volatile o "effec tive "puntatore a campo marcato volatile? –
I dati sottostanti sono volatili. Una cosa a cui pensare è che il puntatore "efficace" non è modificabile (è sempre l'indirizzo del primo elemento) così volatile non avrebbe alcun significato in merito. –