Ho fatto qualche ricerca e non ho trovato una buona risposta e spero di capire meglio. So come usare volatile
ma ho una domanda su cosa fa quando il suo posizionamento è diverso nelle dichiarazioni delle variabili, per esempio.C++ Volatile Tipo Quantificatore Posizione in variabile Definizione
volatile int * ptr;
Il numero intero puntato è volatile
e durante la lettura/scrittura a questa posizione di memoria sempre andare alla posizione di memoria.
int * volatile ptr;
Il valore del puntatore stesso è volatile
e durante la lettura/scrittura a questa posizione di memoria sempre andare alla posizione di memoria.
È una sottile differenza, ma da quello che posso dire la differenza è qualcosa di simile.
volatile int * foo;
int * volatile bar;
volatile int testInt = 5;
------------------------
| 0x020 | - 0x000 (foo), memory location 0x000 can be cached.
------------------------
| 0x020 | - 0x010 (bar), memory location 0x010 can't be cached.
------------------------
| 5 | - 0x020 (testInt)
------------------------
La mia domanda è cosa se il quantificatore volatile non è su un tipo di puntatore, ad esempio.
volatile int foo = 5;
int volatile bar = 5;
------------------------
| 5 | - 0x000 (foo), memory location 0x000 can't be cached.
------------------------
| 5 | - 0x004 (bar), memory location 0x004 can't be cached.
------------------------
Queste due dichiarazioni non fanno la stessa cosa per le dichiarazioni non puntatore?
Si fanno la stessa cosa. –
La tua domanda è solo - è 'volatile int' lo stesso tipo di' int volatile'? – Barry