我有一个函数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
答案 0 :(得分:2)
对此错误最合理的解释是必须在全局范围内定义struct Reference_XS Acc_G
。全局变量的初始值设定项必须在C中保持不变。