2010-05-01 9 views
7

tôi có thể khởi tạo float32x4_t như thế này:Cách khởi tạo const float32x4x4_t (ARM NEON nội tại, GCC)?

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

Nhưng mã này làm cho một lỗi loại không tương thích trong 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 là ma trận 4x4 xây dựng như:

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

Làm thế nào tôi có thể khởi tạo cấu trúc const này?

Trả lời

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} 
}}; 

Mức thứ nhất của dấu ngoặc đơn là cho cấu trúc.
Cấp 2 dành cho mảng float32x4_t.
Cấp thứ ba là dành cho số float32x4_t.

+0

Ôi Chúa ơi! Tôi bỏ qua tên biến! Xin lỗi vì điều này. Tôi đã cập nhật câu hỏi của mình. Và cách này làm cho "lỗi: các loại không tương thích trong khởi tạo", "lỗi: thêm brace nhóm ở cuối initializer". Cảm ơn. – Eonil

+0

@Eonil: Rất tiếc, tôi đã để lại dấu phẩy thừa ở cuối. Hãy thử cập nhật. – kennytm

+0

Xin cảm ơn, nhưng việc xóa dấu phẩy cuối cùng không hiệu quả. Lỗi tương tự. – Eonil