Dokumenty MSDN dla "volatile" w Visual C++ wskazują, że zapisy mają "semantykę wydania" i że odczyty mają "nabycie semantyki", oprócz zapewnienia, że odczyty zawsze będą czytać z pamięci i że zapisy zawsze będą odpowiednio zapisywane.Visual C++ Volatile
Specyfikacja C dla "volatile" zawiera drugą część (nie rób szalonych optymalizacji), ale nie pierwszą część (zapora pamięciowa).
Czy jest jakiś sposób w Visual C++, aby uzyskać tylko "C" zachowanie niestabilności, bez zapory pamięci?
Chcę wymusić, aby zmienna zawsze znajdowała się na stosie, w ustalonym miejscu, ale nie chcę brać na siebie napotkanej pamięci przy każdym przypisaniu do niej.
Czy jest jakiś łatwy sposób to zrobić ze źródłem Visual C++?
Pierwsza część nie jest standardowym zachowaniem C++, jak sądzę. Nie jestem jednak pewien. – Nawaz
"Chcę zmusić zmienną, aby zawsze była na stosie, w ustalonym miejscu" i jak "ulotna" mogłaby w tym pomóc? FWIW, zmienne są * zawsze * w ustalonym miejscu. @Nawaz: nie, pierwsza część nie jest standardowa. –
@Fernades Zmienne lokalne NIE są zawsze w ustalonym miejscu. Zmienne lokalne można wyeliminować, lub ich adres na stosie może znajdować się w różnych miejscach w zależności od tego, gdzie znajduje się komputer. Optymalizator może zrobić wiele szalonych rzeczy. Chcę stłumić te optymalizacje. Aby to zrobić, użyj "volatile". Nie chcę jednak nieobsługiwanego przez standardowego zapory pamięci, do której wrzuca program Visual C++. –