相关疑难解决方法(0)

C++ volatile成员函数

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的函数.我必须确保编译器不会使用先前或后续的读写重新排序该调用.

c++ volatile member-functions

39
推荐指数
3
解决办法
2万
查看次数

定义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)

c++ volatile

6
推荐指数
2
解决办法
1万
查看次数

标签 统计

c++ ×2

volatile ×2

member-functions ×1