class MyClass
{
    int x, y;
    void foo() volatile {
        // do stuff with x
        // do stuff with y
    }   
};
Do I need to declare x and y as volatile or will be all member variables treated as volatile automatically?
I want to make sure that "stuff with x" is not reordered with "stuff with y" by the compiler.
EDIT:
What happens if I'm casting a normal type to a volatile type? Would this instruct the compiler to not reorder access to that location? I want to pass a normal variable in a special situation to a function which parameter is volatile. I must be sure compiler doesn't reorder that call with prior or followed reads and writes.
 
     
     
     
     
    