声明函数时出错

时间:2016-07-27 14:26:41

标签: c compiler-errors syntax-error declaration

这是一个头文件。但是,当我将它包含在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

2 个答案:

答案 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而不是标量对象的数组。