Ich habe einige Nachforschungen gemacht und habe keine gute Antwort gefunden, und ich hoffe auf ein besseres Verständnis. Ich weiß, wie man volatile
verwendet, aber habe eine Frage darüber, was es tut, wenn seine Platzierung in Variablendeklarationen unterschiedlich ist.C++ Volatile Typ Quantifizierer Position in variabler Definition
volatile int * ptr;
Die ganze Zahl wies volatile
und ist beim Lesen/an diesem Speicherplatz Schreiben auf die Speicherstelle gehen immer.
int * volatile ptr;
Der Wert Zeiger selbst ist volatile
und beim Lesen/Schreiben immer an diesen Speicherplatz auf den Speicherplatz gehen.
Es ist ein feiner Unterschied, aber von dem, was ich den Unterschied sagen kann, ist so etwas.
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)
------------------------
Meine Frage ist, was passiert, wenn das flüchtige quantifier nicht auf einem Zeigertyp ist, zum Beispiel.
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.
------------------------
Sind diese beiden Deklarationen nicht dasselbe für Non-Pointer-Deklarationen?
Ja sie das gleiche tun. –
Ist Ihre Frage nur - ist "volatile int" der gleiche Typ wie "int volatile"? – Barry