2016-07-13 2 views
0

Я компилирую исходный код другой команды. Я понимаю ошибку, которую я получаю, но я не могу понять эту строку кода (база кода должна быть правильной).((__m64 *) & (ub8) ddata), дающий ошибку: lvalue требуется как унарный операнд «&»

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

Что такое (__m64 *)? И что он там делает?

EDIT: ошибка: ошибка: именующий требуется, как унарные «&» операнд

+0

'_mm_set1_epi64x' принимает int64 вместо операнда' __m64' (MMX); вы можете использовать его (но убедитесь, что ваш компилятор предоставляет его в 32-битном режиме.) –

ответ

2

Это приведение к указателю. Обратитесь к MSDN for information по типам и функциям SSE2.

Ошибка не связана. Заданное значение больше не равно lvalue, а & может использоваться только для lvalues. Удалите листинг (ub8) или даже лучше найдите человека или макрос, сгенерировавший этот код в первую очередь.

+0

Я был noob с (__m64 *) ... но почему указатель ставится перед амперсандом? – nineties

+0

'ddata' - это указатель? – a3f

+0

Да, это указатель. Я не решаюсь удалить бросок (он используется как 3000 мест в файле проекта) ... – nineties

 Смежные вопросы

  • Нет связанных вопросов^_^