2010-05-27 140 views
2

我们正在编程一个具有两个红外距离传感器的ST269微控制器。为了校准这些传感器,我们为每个传感器制作了一个表格,其中包含我们测量的距离以及我们从ADC获得的相应值。将多维阵列复制到另一个阵列时的语法错误C

现在我们要使用一个函数来近似两者之间的值。因此我们将两个二维数组(每个传感器一个)定义为全局变量。在我们的函数中,我们然后想要将我们想要使用的一个数组复制到一个工作数组并且近似我们的值。

所以这里的代码:

... 

unsigned int ir_werte_re[][] = { 
    {8,553}, 
    ... 
    {83,133} 
}; 

unsigned int ir_werte_li[][] = { 
    {8,566}, 
    ... 
    {83,147} 
}; 

... 

unsigned int geradenaproximation(unsigned int messwert, unsigned int seite) 
{ 
    unsigned int working_array[16][16]; 
    unsigned int i = 0; 

    if (seite == 0) { 
     for (i = 0; i < sizeof(working_array); i++) { 
      working_array[i][0] = ir_werte_li[i][0]; 
      i++; 
     } 
    } 
    else { 
     for (i = 0; i < sizeof(working_array); i++) { 
      working_array[i][0] = ir_werte_re[i][0]; 
      i++; 
     } 
    } 

    i = 0; 
    unsigned int y1 = 0; 
    unsigned int x1 = 0; 
    ... 
} 

此代码是在一个名为sensor.c。我们没有在sensor.h中写关于全局数组的任何信息? sensor.h当然包含在main.c中,并且调用函数。

我们也尝试通过

的memcpy复制的阵列(working_array,ir_werte_li,的sizeof(working_array));

,并在每个我们这样做,我们得到一个

syntax error near unsigned 
在该行

,我们正在声明

unsigned int y1 = 0; 

,我敢肯定,没有语法错误在这行:)

我最后一次花在C编码是几年后,所以我不知道我们试图做到这一点的方式是好的。也许我们可以通过使用指针而不是真正复制数组或其他东西来解决这个问题。所以请帮助我,我会很感激你的这一点。

回答

6

在C(C99之前)中,所有变量定义必须出现在当前块作用域的顶部。

+0

Pre-C99是的,C99允许您自由放置声明。 – 2010-05-27 10:41:14

+0

谢谢你指出乔治。我已经相应地修改了答案。 – 2010-05-27 10:42:36

+0

谢谢。 现在我要做的就是等待一个星期,让我有机会再次把我的手放在机器人上。 – mantuko 2010-05-27 13:55:16

相关问题