我有相當不錯的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