在 C++ 中,volatile
处理方式相同const
:将指向 volatile 数据的指针传递给不希望volatile
修饰符触发编译错误的函数。
int foo(int* bar) { /* snip */ }
int main()
{
volatile int* baz;
foo(baz); // error: invalid conversion from ‘volatile int*’ to ‘int*’
}
为什么危险?很明显const
,移除它会破坏const
正确性的修饰符;但是有“volatile
正确性”这样的东西吗?我无法弄清楚如何将指向易失性数据的指针作为指向非易失性数据的指针传递会导致问题。
编辑让你们知道我为什么volatile
首先使用:Mac OS X 的许多OSAtomic
函数系列(用于原子增量、减量、加法、减法、比较和交换等)都带有volatile
参数。