C - Как получить доступ к элементам вектора с помощью GCC расширение вектора SSE

Для второй части Вашего вопроса ("jsp файлы, помещенные под сетью-inf, не будет непосредственно доступно пользователю"), который корректен. Чтобы позволить пользователям доступу, файлы JSP в сервлете папки WEB-INF и отображающих сервлет записях должны быть сделаны в файле web.xml для каждой страницы JSP.

9
задан pavium 26 November 2009 в 15:18
поделиться

2 ответа

Безопасный и рекомендуемый способ доступа к элементам - это объединение, а не перфорация типа указателя, которая обманывает механизмы обнаружения псевдонимов компилятора и может привести к нестабильному коду.

union Vec4 {
    v4sf v;
    float e[4];
};

Vec4 vec;
vec.v = (v4sf){0.1f,0.2f,0.3f,0.4f};
printf("%f %f %f %f\n", vec.e[0], vec.e[1], vec.e[2], vec.e[3]);

17
ответ дан 4 December 2019 в 07:47
поделиться

Вы забываете, что вам нужно заново интерпретировать a как массив чисел с плавающей запятой. Следующий код работает правильно:

int main(){
    v4sf a,b,c;
    a = (v4sf){0.1f,0.2f,0.3f,0.4f};
    b = (v4sf){0.1f,0.2f,0.3f,0.4f};
    c = (v4sf){0.1f,0.2f,0.3f,0.4f};
    a = b + c;
    float* pA = (float*) &a;
    printf("a=[%f %f %f %f]\n",pA[0], pA[1], pA[2], pA[3]);
    return 0;
}

PS: спасибо за этот вопрос, я не знал, что gcc имеет такую ​​поддержку SSE.

ОБНОВЛЕНИЕ: это решение не работает, когда массивы не выровнены. Решение, предоставленное @drhirsh , избавлено от этой проблемы.

5
ответ дан 4 December 2019 в 07:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: