Я пытаюсь использовать векторные расширения GCC, точный код, который я пробовал: :
typedef float Vector4 __attribute__ ((vector_size (16)));
void defVector(Vector4* v, float x,float y,float z,float w){
v[0] = x;
v[1] = y;
v[2] = z;
v[3] = w;
}
int main(int argc, char* argv){
Vector4 a;
defVector(&a, 1, 2, 3, 4);
}
и продолжаю получать ошибки:
incompatible types when assigning to type ‘Vector4 {aka __vector(4) float}’ from type ‘float’
v[0] = x;
Не могу разыменовать это тоже, или я получаю другую ошибку.
Я не хотел бы копировать всю вещь в стек функций каждый раз, когда я ее использую, и необходимо указатели на возвращаемые значения, такие как
int someFunc(Vector4 v, Vector4* r){
...
r[0] = return_value;
return 0;
}
Я перепробовал все, что знаю, чтобы получить доступ к значениям внутри функции.
Что мне здесь не хватает?