Prowadzę badania i nie znalazłem dobrej odpowiedzi i mam nadzieję na lepsze zrozumienie. Wiem, jak używać volatile
, ale mam pytanie dotyczące tego, co robi, gdy jego położenie jest inne w deklaracjach zmiennych, na przykład.C++ Pozycja kwantyfikatora typu lotnego w zmiennej definicji
volatile int * ptr;
Liczba całkowita wskazał na to volatile
i podczas odczytu/zapisu do tego miejsca pamięci zawsze iść do miejsca pamięci.
int * volatile ptr;
Wartość wskaźnika jest sam volatile
i podczas odczytu/zapisu do tego miejsca pamięci zawsze iść do miejsca pamięci.
To subtelna różnica, ale z tego, co widzę, różnica jest taka.
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)
------------------------
Moje pytanie brzmi: jeśli na przykład lotny kwantyfikator nie znajduje się w typie wskaźnika.
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.
------------------------
Nie te dwie deklaracje zrobić to samo dla deklaracji non-wskaźnik?
Tak robią to samo. –
Czy Twoje pytanie brzmi - czy "zmienna int" jest tego samego typu co "int volatile"? – Barry