class MyClass
{
int x, y;
void foo() volatile {
// do stuff with x
// do stuff with y
}
};
Run Code Online (Sandbox Code Playgroud)
我是否需要声明x并将其y视为volatile或将成为volatile自动处理的所有成员变量?
我想确保"stuff with x"不会y被编译器的"stuff with " 重新排序.
编辑:如果我将正常类型转换为volatile类型会发生什么?这是否会指示编译器不重新排序对该位置的访问?我想在特殊情况下将一个普通变量传递给一个参数是volatile的函数.我必须确保编译器不会使用先前或后续的读写重新排序该调用.
volatile可以用于类对象吗?喜欢:
volatile Myclass className;
Run Code Online (Sandbox Code Playgroud)
问题是它无法编译,无论何时调用某个方法,错误都说:错误C2662:'function':无法将'this'指针从'volatile MyClass'转换为'MyCLass&'
这里有什么问题以及如何解决?
编辑:
class Queue {
private:
struct Data *data;
int amount;
int size;
public:
Queue ();
~Queue ();
bool volatile push(struct Data element);
bool volatile pop(struct Data *element);
void volatile cleanUp();
};
.....
volatile Queue dataIn;
.....
EnterCriticalSection(&CriticalSection);
dataIn.push(element);
LeaveCriticalSection(&CriticalSection);
Run Code Online (Sandbox Code Playgroud)