class MyClass
{
int x, y;
void foo() volatile {
// do stuff with x
// do stuff with y
}
};
我需要声明吗x
and y
as volatile
或者将所有成员变量视为volatile
自动地?
我想确保“与x
” 没有重新排序为“东西y
”由编译器。
编辑:
如果我将普通类型转换为volatile
类型?这是否会指示编译器不要重新排序对该位置的访问?我想将特殊情况下的普通变量传递给参数易失的函数。我必须确保编译器不会通过之前或之后的读取和写入重新排序该调用。
标记成员函数volatile
就像标记它一样const
;这意味着接收者对象被视为被声明为volatile T*
。因此,任何引用x
or y
将被视为volatile
读入成员函数。此外,一个volatile
对象只能调用volatile
成员函数。
也就是说,您可能想要标记x
and y
volatile
无论如何,如果您确实希望将所有对它们的访问视为volatile
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)