La documentazione MSDN per "volatile" in Visual C++ indicare che le scritture hanno "la semantica di rilascio" e che si legge hanno "acquisire la semantica", oltre a garantire che legge sempre leggere dalla memoria e che scrive sempre scrivere di conseguenza.Visual C++ Volatile
Spec C per "volatile" comprende la seconda parte (non farlo ottimizzazioni folle), ma non la prima parte (una recinzione memoria).
C'è un modo in Visual C++ per ottenere l'unico "C" il comportamento volatile, senza la recinzione di memoria?
voglio forzare una variabile per essere sempre sulla pila, in un posto fisso, ma non voglio prendere il sovraccarico di una recinzione di memoria su ogni incarico ad esso.
C'è un modo semplice per farlo con l'origine di Visual C++?
La prima parte non è un comportamento C++ standard, penso. Non sono sicuro, però. – Nawaz
"Voglio forzare una variabile per essere sempre in pila, in un punto fisso" e come sarebbe "volatile" aiutare in questo? FWIW, le variabili sono * sempre * in un punto fisso. @Nawaz: no, la prima parte non è standard. –
@Fernades Le variabili locali NON si trovano sempre in un punto fisso. Le variabili locali possono essere eliminate o il loro indirizzo nello stack può essere in punti diversi a seconda di dove si trova il PC. L'ottimizzatore può fare un sacco di cose pazze. Voglio sopprimere quelle ottimizzazioni. Il modo per farlo è usare "volatile". Tuttavia, non desidero la recinzione di memoria non obbligatoria da standard che Visual C++ inserisce. –