我正在編譯其他團隊的源代碼。我明白我得到的錯誤,但我無法理解代碼的這一行(代碼庫應該是正確的)。((__m64 *)&(ub8)ddata)給出錯誤:左值需要作爲一元'&'操作數
data_vec = _mm_set1_epi64(*((__m64*)&(ub8) ddata));
什麼是(__m64 *)?那裏在做什麼?
編輯:錯誤是:需要左值作爲一元「&」操作數
我正在編譯其他團隊的源代碼。我明白我得到的錯誤,但我無法理解代碼的這一行(代碼庫應該是正確的)。((__m64 *)&(ub8)ddata)給出錯誤:左值需要作爲一元'&'操作數
data_vec = _mm_set1_epi64(*((__m64*)&(ub8) ddata));
什麼是(__m64 *)?那裏在做什麼?
編輯:錯誤是:需要左值作爲一元「&」操作數
這是一個轉換爲指針:錯誤。關於所使用的SSE2類型和功能,請參閱MSDN for information。
錯誤與此無關。已鑄造的值不再是左值,而&
只能用於左值。刪除(ub8)
強制轉換,或者更好地找到生成該代碼的人或宏。
'_mm_set1_epi64x'採用int64而不是'__m64'(MMX)操作數;你可能更喜歡使用它(但檢查你的編譯器是否提供32位模式。) –