挥发物
类型限定符; 应用于类型时,生成类型的 volatile 限定版本。挥发性限定与类型系统中的 const
限定具有相同的作用,但是 volatile
不会阻止对象被修改; 相反,它强制编译器将对这些对象的所有访问视为副作用。
在下面的示例中,如果 memory_mapped_port
不是易失性的,编译器可以优化函数,使其仅执行最终写入,如果 sizeof(int)
大于 1 则不正确 .volatile
资格强制它将所有 sizeof(int)
写入视为不同的一侧效果,因此执行所有这些(按顺序)。
extern volatile char memory_mapped_port;
void write_to_device(int x) {
const char* p = reinterpret_cast<const char*>(&x);
for (int i = 0; i < sizeof(int); i++) {
memory_mapped_port = p[i];
}
}