2016-07-13 57 views
0

我正在編譯其他團隊的源代碼。我明白我得到的錯誤,但我無法理解代碼的這一行(代碼庫應該是正確的)。((__m64 *)&(ub8)ddata)給出錯誤:左值需要作爲一元'&'操作數

data_vec = _mm_set1_epi64(*((__m64*)&(ub8) ddata)); 

什麼是(__m64 *)?那裏在做什麼?

編輯:錯誤是:需要左值作爲一元「&」操作數

+0

'_mm_set1_epi64x'採用int64而不是'__m64'(MMX)操作數;你可能更喜歡使用它(但檢查你的編譯器是否提供32位模式。) –

回答

2

這是一個轉換爲指針:錯誤。關於所使用的SSE2類型和功能,請參閱MSDN for information

錯誤與此無關。已鑄造的值不再是左值,而&只能用於左值。刪除(ub8)強制轉換,或者更好地找到生成該代碼的人或宏。

+0

我當時是(__m64 *)的noob,但爲什麼指針被放在&符前面? – nineties

+0

'ddata'是一個指針嗎? – a3f

+0

是的,它是一個指針。我在刪除演員時猶豫不決(它在項目文件中的3000個地方使用)... – nineties

相關問題