2016-07-27 108 views
0

我有一個函數Reference返回一個結構如下圖所示:無效的初始化

struct Reference_XS { 
    float *mat_c; 
}; 

struct Reference_XS Reference(
    float q0, 
    float q1, 
    float q2, 
    float q3, 
    float val1, 
    float val2, 
    float val3 
) 
{ 
    float mat_a[3][3] = { 
     (2*q0*q0)+(2*q1*q1)-1, (2*q1*q2)-(2*q0*q3), (2*q1*q3)+(2*q0*q1), 
     (2*q1*q2)+(2*q0*q3), (2*q0*q0+(2*q2*q2)-1), (2*q2*q3)-(2*q0*q1), 
     (2*q1*q3)-(2*q0*q2), (2*q2*q3)+(2*q0*q1), (2*q0*q0)+(2*q3*q3)-1 
    }; 

    float mat_b[3][1] = { val1, val2, val3 }; 
    static float Mat_c[3]; 
    int i, k; 
    float temp = 0; 

    for (i = 0; i < 3; i++) { 
     temp = 0; 
     for (k = 0; k < 3; k++) { 
      temp = mat_a[i][k] * mat_b[k][0] + temp; 
      Mat_c[i] = temp;   
     } 
    } 

    struct Reference_XS data = { Mat_c }; 
    return data; 
} 

但在main.c,當我把它稱爲像

struct Reference_XS Acc_G = Reference(
    q0_XS, 
    q1_XS, 
    q2_XS, 
    q3_XS, 
    acx_XS, 
    acy_XS, 
    acz_XS 
); 

它顯示了錯誤Invalid Initializer

+5

嘿,我想你剛剛拼寫'參考'錯誤,或者只是這個問題中的拼寫錯誤? – Matthew

+0

@Matthew嗨。對不起,這是輸入的問題,在代碼是好的 –

+0

然後顯示您的*完整的*代碼。 –

回答

2

對此錯誤最合理的解釋是struct Reference_XS Acc_G必須在全局範圍內定義。全局變量的初始化必須是C中的常量。

+0

我認爲錯誤可能在頭文件中,因爲現在它出現了缺少括號的錯誤。 (錯誤:預期的標識符或'('之前的'浮動')。但頭文件只是exacly作爲帖子。我認爲,如果我能糾正這可能錯誤的初始化消失 –

+0

@JuanBravo:你可以發佈的內容'main.c'? – chqrlie