Как использовать 'const int' ?
Всем привет.
У меня есть вопрос.
Я пытаюсь использовать функцию '_mm_extract_epi8', которая имеет параметр' const int ndx'.
инт _mm_extract_epi8(
__m128i в,
константный инт NDX по
);
Если я хочу использовать как показано ниже, что мне делать?
__m128i my128i; for (int i=0; i<16; i++) { _mm_extract_epi8(my128i, i); // I want to increase position. }
Что я уже пробовал:
Я изменил код, как показано ниже, но он не работает.
for (int i=0; i<15; i++) { const int idx=i; _mm_extract_epi8(my128i, idx); // Compile Error! }
-------------------------------------
Сообщение об ошибке: ошибка C2057: ожидаемое постоянное выражение.
Итак, я копирую и вставляю эту функцию.
_mm_extract_epi8(my128i, 0);
_mm_extract_epi8(my128i, 1);
_mm_extract_epi8(my128i, 2);
...
_mm_extract_epi8(my128i, 15);
[no name]
Что именно является ошибкой компиляции? Используйте "улучшить вопрос".
Joe Pizzi
Ваше сообщение об ошибке исходит из строки const int idx = i. поскольку i не является константой, компилятор не может генерировать код для этой строки. Код, который у вас есть в первом блоке кода (тот, который говорит :" Я хочу увеличить позицию"), кажется мне правильным. Что не работает в этом коде?
Выражение "const int ndx" в списке параметров говорит вам, что вызываемая функция _mm_extract_epi8 не изменит значение переменной, переданной для позиции номер 2 вызова. Он не ограничивает значение, которое вы ему придаете.
Кстати, между первым и вторым примерами вы изменили максимальную итерацию цикла с 15 на 14. Не знаю, намеревались ли вы это сделать. В вашем вопросе нет ничего, что указывало бы на то, что это не было ошибкой.
[no name]
"Ваше сообщение об ошибке из строки, const int idx = "
Не правильный. Это просто означает, что idx не может быть изменен. http://cboard.cprogramming.com/cplusplus-programming/168659-declaring-const-variables-inside-loops.html
На первый взгляд оба примера кода должны быть скомпилированы. Чего-то не хватает.
Philippe Mori
В этом вопросе чего-то не хватает, так как на первый взгляд никаких видимых проблем нет. Таким образом, проблема может быть связана с тем, как определяется какой-то другой символ.
Может быть, есть какие-то макро-трюки или какие-то специфические для платформы/оборудования вещи...