这是一个头文件。但是,当我将它包含在main.c中时,它会给我下一个错误:期望的标识符或'(''浮动'之前'。我知道它可能是一个非常愚蠢的错误,但我没有看到它。代码是:< / p>
#ifndef Reference
#define Reference
float mat_a[3][3];
struct Reference_XS
{
int Bytes;
unsigned char *Buffer_Lectura;
};
struct Reference_XS Sist_Referecence(float q0,float q1,float q2,float q3,float val1,float val2,float val3)
{
float mat_a={(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};
float mat_c[3][1];
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][0]=temp;
}
}
struct Reference_XS data={mat_c};
return data;
}
#endif
答案 0 :(得分:1)
看一下mat_a变量的初始化。
第一个错误是,你的浮动mat_a变量是使用初始化列表初始化的,但是你必须忘记在mat_a之后添加数字idxyier。你应该怎么做浮动mat_a [N]其中N是浮点数组包含的元素数。
第二个错误是声明的一部分,其中缺少开始圆括号。第二个逗号后,括号丢失了。
float mat_a={(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};
答案 1 :(得分:1)
在本声明中
float mat_a={(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};
您正在尝试使用多个初始值设定项初始化标量对象,而且第三个初始值设定项不具有左括号
2*q1*q3)+(2*q0*q1),
^^^
似乎你想要定义一个名为mat_a而不是标量对象的数组。