2010-05-01 9 views
7

Ich kann float32x4_t wie folgt initialisieren:Wie initialisiert man const float32x4x4_t (ARM NEON intrinsic, GCC)?

const float32x4x4_t zero = { 0.0f, 0.0f, 0.0f, 0.0f }; 

Aber dieser Code macht einen Fehler inkompatible Typen in initializer:

const float32x4x4_t one = 
{ 
    1.0f, 1.0f, 1.0f, 1.0f, 
    1.0f, 1.0f, 1.0f, 1.0f, 
    1.0f, 1.0f, 1.0f, 1.0f, 
    1.0f, 1.0f, 1.0f, 1.0f, 
}; 

float32x4x4_t ist Matrix 4x4 gebaut wie:

typedef struct float32x4x4_t 
{ 
    float32x4_t val[4]; 
} 
float32x4x4_t; 

Wie kann ich diese Const Struktur initialisieren?

Antwort

8
const float32x4x4_t nameOfVariableHere = 
{{ 
    {1.0f, 1.0f, 1.0f, 1.0f}, 
    {1.0f, 1.0f, 1.0f, 1.0f}, 
    {1.0f, 1.0f, 1.0f, 1.0f}, 
    {1.0f, 1.0f, 1.0f, 1.0f} 
}}; 

Die erste Ebene der Klammern ist für die Struktur.
Die zweite Ebene ist für das Array float32x4_t.
Die 3. Ebene ist für float32x4_t selbst.

+0

Oh mein Gott! Ich habe Variablennamen weggelassen! Das tut mir leid. Ich habe meine Frage aktualisiert. Und dieser Weg macht "Fehler: Inkompatible Typen bei der Initialisierung", "Fehler: Extra Klammergruppe am Ende des Initialisierers". Vielen Dank. – Eonil

+0

@Eonil: Entschuldigung, ich habe das zusätzliche Komma am Ende verlassen. Probiere das Update aus. – kennytm

+0

Danke, aber letzte Komma entfernen ist nicht effektiv. Gleiche Fehler. – Eonil