我有相当不错的C++技巧,但是这一次演员一直给我提出问题。我有一个函数,它具有以下参数:(volatile void **, void * , void*)
。我有3 int*
变量,我试图通过他们作为(&var1, var2, var3)
。但是,我收到以下错误:Cannot convert parameter 1 from int** to volatile void**
。是否有需要制作的特定演员阵容?以下是我正在使用的一段代码。任何帮助是极大的赞赏。在C++中投射一个指向易失性void **的指针
int* pVal = InterlockedCompareExchangePointer(&cur_val, new_val, old_val);
这是在Windows XP机器上的VS2010中完成的。
对不起,但InterlockedCompareExchangePointer返回什么? – Monkeyanator
这是通常的CAS成语:'CAS(storage,new_val,expected_old_val)',它返回在位置'storage'中找到的旧值 - http://msdn.microsoft.com/en-us/library/windows/desktop/ ms683568%28v = vs.85%29.aspx –
嘿,我不确定这一点,但我怀疑你是否可以在函数调用中将非易失性变量转换为volatile。尝试使原始指针变得不稳定并查看它是否有效? – Ankit