在C中将多维数组复制到另一个数组时出现语法错误

man*_*uko 2 c c89 multidimensional-array

我们正在编程一个ST269微控制器,它有两个红外距离传感器.为了校准这些传感器,我们为每个传感器制作了一个表格,其中包括我们测量的距离以及我们从ADC获得的相应值.

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

所以这是代码:

...

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;
    ...
}
Run Code Online (Sandbox Code Playgroud)

此代码位于名为sensor.c的文件中.我们在sensor.h中没有写过关于我们全局数组的任何内容吗?sensor.h当然包含在我们的main.c中,并且函数被调用.

我们还尝试通过复制数组

memcpy(working_array,ir_werte_li,sizeof(working_array));

从各方面来说,我们都是这样做的

syntax error near unsigned
Run Code Online (Sandbox Code Playgroud)

在我们宣布的行中

unsigned int y1 = 0;
Run Code Online (Sandbox Code Playgroud)

而且我很确定此行中没有语法错误:)

我最后一次用C语言编写代码还需要几年的时间,所以我不确定我们尝试这样做的方式是否合适.也许我们可以通过使用指针而不是真正复制数组或其他东西来解决这个问题.所以请帮助我,我会很感激你的.

Mar*_*tos 6

在C(前C99)中,所有变量定义必须出现在当前块范围的顶部.